java中创建一个对象的过程?
(1)将类的字节码文件加载进内存
(2)声明一个该类类型引用s
(3)在堆内存创建对象,
(4)给对象中属性默认初始化值
(5)属性进行显示初始化
(6)构造方法进栈,对对象中的属性赋值,构造方法弹栈
(7)将对象的地址值赋值给s
final修饰变量的初始化时机?
a.未被static关键字修饰
* 可以显示初始化
* 可以在构造方法中初始化
b.被static修饰
* 可以显示初始化
* 可以在静态代码块中初始化
* 不能在构造方法中初始化
多态中的成员访问特点
a.成员方法:编译时看父类(左边),运行时看子类(右边)
b.成员变量:编译时看父类(左边),运行时看父类(右边)
c.静态方法:编译看左边(父类),运行看左边(父类)。
(静态和类相关,算不上重写,所以,访问还是左边的)
只有非静态的成员方法,编译看左边,运行看右边
抽象类的成员特点
a.成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?不能修饰成员变量
b.构造方法:必须有。
* 用于子类访问父类数据的初始化。
c.成员方法:既可以是抽象的,也可以是非抽象的。
* 抽象方法 强制要求子类做的事情。
* 非抽象方法 子类继承的事情,提高代码复用性
abstract关键字不能与哪些关键字共同使用
(1)abstract和static
被abstract修饰的方法没有方法体
被static修饰的可以用类名.调用,但是类名.调用抽象方法是没有意义的
(2)abstract和final
被abstract修饰的方法强制子类重写
被final修饰的不让子类重写,所以他俩是矛盾
(3)abstract和private
被abstract修饰的是为了让子类看到并强制重写
被private修饰不让子类访问,所以他俩是矛盾的˜ |
|