您的位置:首页 > 编程语言 > Java开发

Java基础第五天_静态代码块、类的继承和接口

2016-05-11 15:23 513 查看
1.文字阐述静态代码块的作用。2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?4.定义类Person,Man,Woman形成继承关系。5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?6.抽象修饰符有哪些非法组合?并给出合理的解释?7.super和this作用以及用法以及注意事项?8.定义接口1.IWhite2.IRich3.IBeanti4.定义类,实现以上三个接口.(WomenStar)5.定义土豪类(EarchRicher.marring(...))

1.
1.局部代码块
在函数内部定义
不能使用static修饰
2.构造代码块
也是类的成员,和成员变量和成员函数同级
构造对象时 ,先调用构造代码块,然后是构造函数。
构造代码块,加static修饰符就变成静态代码块,
静态代码块在类加载的时候执行,而且只执行一次
3.静态代码块
构造代码块+static 修饰符
静态代码块在类加载的时候执行,而且只执行一次
手动控制类加载使用Class.forName("classname") 默认加载类时 执行代码块
Class.forName(String,boolean initialize,ClassLoader) 可以控制加载时是否初始化
2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?
构造对象时 ,先调用构造代码块,然后是构造函数。跟位置无关。
作用:a.对成员变量初始化
b.构建多个代码块进行方法重载

3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?

默认执行静态代码块 手动控制类加载使用Class.forName("classname") 默认加载类时 执行代码块Class.forName(String,boolean initialize,ClassLoader) 可以控制加载时是否初始化4.定义类Person,Man,Woman形成继承关系。

class Person{
}
class Man extends Person{}
class Woman extends Person{}

5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?抽象方法:没有方法体的方法,必须用abstract修饰
抽象方法只能存在于抽象类中
抽象类也必须使用abstract修饰,含有抽象方法的类
抽象类有构造函数,可以被重载。
6.抽象修饰符有哪些非法组合?并给出合理的解释? abstract + static 是非法的修饰符组合。静态直接访问没有意义,需要实例化后访问 abstract + final 是非法的修饰符组合。final修饰为最终的但是抽象方法需要实例化重写 abstract + private是非法的修饰符组合。private 修饰子类不能继承进行实例化7.super和this作用以及用法以及注意事项?this 是指向对象自身的引用
this(...)表示的是调用当前类的构造函数
super 指向父类
super(...) 访问超类的构造函数
都是只能用在第一行
8.定义接口1.IWhite2.IRich3.IBeanti4.定义类,实现以上三个接口.(WomenStar)5.定义土豪类(EarchRicher.marring(...))
//白
interface IWhite{
public void white();
}
//富
interface IRich{
public void rich();
}
//美
interface IBeauti{
public void beauti();
}
//白富美集合
interface IBFM extends IWhite,IRich,IBeauti{
}
//开车接口
interface Drive{
public void drive();
}

// 女明星实现这个接口
class WomanStar implements IBFM{
public void white(){
System.out.println("我很白");
}
public void rich(){
System.out.println("我很富");
}
public void beauti(){
System.out.println("我很美");
}
}

//会开车的女明星
class WomanStarDriver extends WomanStar implements Drive{
public void drive(){
System.out.println("会开车");
}
}

//土豪
class RichMan{
public void marry(IBFM i){
System.out.println("有戏");
}
//土豪条件增加会开车
public void drive(Drive d){
System.out.println("好好开");
}

}

//主方法
class MarryDemo{
public static void main(String[] args){
WomanStar w=new WomanStar();
w.white();
RichMan rm=new RichMan();
rm.marry(w);
WomanStarDriver wsd =new WomanStarDriver();
System.out.println("---------------");
wsd.white();
rm.marry(wsd);
rm.drive(wsd);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 基础 代码块