笔记——Java面向对象之继承

来源:互联网 发布:空姐老了知乎 编辑:程序博客网 时间:2024/05/23 16:45

1.继承的特点

java只支持单继承,不支持多继承
java支持多层继承

2.this和super关键字

this关键字代表对象的引用,代表哪个类对象取决于哪个类调用,一般在一个类里直接调用this指本类引用。
super关键字代表当前子类对父类对象的引用。
this(参数),调用本类其他相应参数的构造函数,写在构造函数第一行。
super(参数),调用父类相应参数的构造函数,写在构造函数第一行,每个构造函数都会隐式调用super()。
this(参数)和super(参数)不能同时出现在一个构造方法内,因为this会调用其他构造,其他构造会调用默认的super,编译器不通过。
this(参数)和super(参数)不能在静态static环境中使用。
this是一个本类对象的引用,super是java关键字。
以上子类调用父类的过程要注意修饰符,子类无法调用父类private的方法与属性。

3.方法的重写(覆盖)Override

子类重写父类方法时,方法名与参数列表以及返回值必须完全相同。
子类重写父类方法时,在修改方法访问修饰符的时候,只能有小范围扩大到大范围。也就是说,重写方法时,不能降低修饰符权限范围。
子类重写父类方法时,如修改了返回值类型,返回值的类型必须是父类中此方法返回值的子类。
子类重写父类方法并修改返回值,只可以在J2SE5.0以上的版本中操作。
子类重写父类方法时,在方法内所抛出的异常子类不能比父类方法内抛出更多的异常,也就是子类方法所抛出的异常必须是父类方法异常或其异常子类,或者不抛异常。
子类重写父类方法时,父类的方法不可被static修饰,不可被final修饰。
访问修饰符为private的方法无法被重写。

4.final关键字

被final关键字修饰的类无法被继承。
子类无法重写父类中final关键字修饰的方法。
final修饰的类内属性必须赋值且无法修改。
final修饰的局部变量只能赋值一次且无法修改。
final修饰的方法参数,是在方法调用传参时初始化的。

5.子类对象初始化过程

在初始化一个类的对象时,如果对象有父类,也就是该类有继承关系时,对象在初始化时遵循以下规则:
先初始化父类,后初始化子类。
先初始化静态变量和代码块,后初始化构造函数。
父类初始化完成后再初始化子类。

从上述规则可以得出对象创建的基本流程:
1.父类static变量初始化
2.父类static代码块初始化
3.子类static变量初始化
4.子类static代码块初始化
5.父类成员变量初始化
6.父类构造代码块初始化
7.父类构造方法初始化
8.子类成员变量初始化
 9.子类构造代码块初始化
 10.子类构造方法初始化
构造代码块:直接在类中定义并且没有加static关键字的代码块,构造代码块在对象创建时被调用,也就是说每次new的时候都会调用。多用于处理子类与父类共有特征处理。
静态代码块:在类中以static修饰的代码块。会优先于构造代码块初始化,但只初始化一次。多用作一次性初始化操作,在安卓开发时加载so库,或者数据库db文件等。






0 0
原创粉丝点击