Java由浅入深讲解继承下(java 继承的实现原理)

网友投稿 295 2022-08-02


目录1.代码块初始化2.protected关键字3.final关键字4.java中允许的继承方式

本篇紧接上一篇内容继续,还是从继承里的细节开始

1.代码块初始化

关于代码块的定义和使用因为之前已经进行过介绍,所以这里就不再赘述,我们所关注的点是父类和子类中的代码块在运行时候的先后顺序是怎样的

首先还是在父类以及子类中添加代码块,如下:

//父类

{

System.out.println("父类实例代码块");

}

static {

System.out.println("父类静态代码块");

}

public Plant() {

System.out.println("父类构造方法");

}

//子类

{

System.out.println("子类实例代码块");

}

static {

System.out.println("子类静态代码块");

}

public Tree() {

System.out.println("子类构造方法");

}

我们在main方法中实例化子类对象后来看一下结果:

静态代码块依旧是最先被执行的,然后是父类的实例代码块和构造方法,最后是子类的实例代码块和构造方法

静态代码块由于只执行一次,所以如果再实例化一次子类对象的话父类和子类的静态代码块都不会再执行

2.protected关键字

之前的访问修饰限定符中还遗留了一个protected,这里把这个坑填上,procted在包访问权限的基http://础上多了一个权限:不同包中的子类可以访问父类的成员

假设Plant和Tree分别在两个包中,那么Plant中protected修饰的成员依旧可以在Tree中使用super来进行访问

需要注意的一点:父类必须是用public修饰,否则访问权限不够,不同包的两个类根本无法构成继承关系

4个访问修饰限定符都讲完了,这里作一个总结:

访问范围privatedefaultprotectedpublic同一包中的同一类√√√√同一包中的不同类×√√√不同包中的子类××√√不同包中的非子类×××√

3.final关键字

final关键字同样是用来修饰类、方法以及变量的,作用如下:

修饰变量:成为常量,无法被修改

修饰方法:不能被重写

修饰类:不能作为父类被其它类继承

4.Java中允许的继承方式

单继承:A继承B

多层继承:A继承B,B继承C、C继承D......

不同类继承同一个父类:A继承B,C也继承B

但是Java中不允许一个类继承多个父类(即C++中的多继承)

Java继承的内容结束,后面就是多态的内容,完


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java由浅入深细数数组的操作(java数组操作)
下一篇:Java由浅入深讲解继承上
相关文章

 发表评论

暂时没有评论,来抢沙发吧~