Java继承应用实例分析
这篇文章主要介绍"Java继承应用实例分析",在日常操作中,相信很多人在Java继承应用实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"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在包访问权限的基础上多了一个权限:不同包中的子类可以访问父类的成员
假设Plant和Tree分别在两个包中,那么Plant中protected修饰的成员依旧可以在Tree中使用super来进行访问
需要注意的一点:父类必须是用public修饰,否则访问权限不够,不同包的两个类根本无法构成继承关系
4个访问修饰限定符都讲完了,这里作一个总结:
访问范围 | private | default | protected | public |
同一包中的同一类 | √ | √ | √ | √ |
同一包中的不同类 | × | √ | √ | √ |
不同包中的子类 | × | × | √ | √ |
不同包中的非子类 | × | × | × | √ |
3.final关键字
final关键字同样是用来修饰类、方法以及变量的,作用如下:
修饰变量:成为常量,无法被修改
修饰方法:不能被重写
修饰类:不能作为父类被其它类继承
4.Java中允许的继承方式
单继承:A继承B
多层继承:A继承B,B继承C、C继承D......
不同类继承同一个父类:A继承B,C也继承B
但是Java中不允许一个类继承多个父类(即C++中的多继承)
到此,关于"Java继承应用实例分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!