关于继承、类初始化、多态
2016-09-08 11:44
253 查看
首先是类的继承的问题:
子类继承父类,初始化执行顺序为:
1.优先执行父类中的static块,再执行子类中的static块。
2.执行父类中的初始化语句。
3.然后执行父类中的构造函数,父类中的函数。
4.执行子类中的构造函数,子类中的函数。
注明:static块是写入到内存中的,所以是会优先执行的。只要static块中的语句有一个被执行了,那么整个static块都会执行。
附录代码:
运行的结果为:
多态:
对象为子类的情况下:子类中如果有这个函数,那么对象会调用子类中的函数,否则就会调用父类中的函数。
对象为父类的情况下:只会调用父类中的函数。
示例代码:
如有错误,请指正,谢谢~欢迎评论!
子类继承父类,初始化执行顺序为:
1.优先执行父类中的static块,再执行子类中的static块。
2.执行父类中的初始化语句。
3.然后执行父类中的构造函数,父类中的函数。
4.执行子类中的构造函数,子类中的函数。
注明:static块是写入到内存中的,所以是会优先执行的。只要static块中的语句有一个被执行了,那么整个static块都会执行。
附录代码:
class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A Class"); } static { System.out.println("STaticA"); } } public class HElloB extends HelloA { HElloB() { System.out.println("HelloB"); } { System.out.println("I'm B class"); } static { System.out.println("Static B"); } public static void main(String[] args) { new HElloB(); } }
运行的结果为:
STaticA Static B I'm A Class HelloA I'm B class HelloB
多态:
对象为子类的情况下:子类中如果有这个函数,那么对象会调用子类中的函数,否则就会调用父类中的函数。
对象为父类的情况下:只会调用父类中的函数。
示例代码:
/** * 上层的父类 * @author Feige * */ class Person7{ public void fun1() { System.out.println("No1,Person7.fun1"); } public void fun2() { System.out.println("No2,Person7.fun2"); } } class Student3 extends Person7{
public void fun1() { System.out.println("No3,Student3.fun1 继承person7"); } public void fun3() { System.out.println("No4,Student.fun3继承person7"); } } public class DuoTai { public static void main(String[] args) { Student3 s4=new Student3(); s4.fun1(); s4.fun2(); s4.fun3(); Person7 s7=new Person7(); //Student3 s7=(Student3)s6; s7.fun1(); s7.fun2(); } }运行结果:
No3,Student3.fun1 继承person7 No2,Person7.fun2 No4,Student.fun3继承person7 No1,Person7.fun1 No2,Person7.fun2
如有错误,请指正,谢谢~欢迎评论!
相关文章推荐
- 关于C++中私有继承后虚函数的访问权限与私有继承后多态的问题
- 关于C语言中继承和多态的实现
- 学习C#的一些笔记(关于继承与多态,static关键字)
- 关于虚函数(多态)与继承的一道搜狗笔试题
- [cocos2d-x]关于是否继承CCSprite,以及关于继承初始化时候的未知问题
- 关于继承和多态的一个简单例子
- JAVA编程思想笔记【突击1】——初始化,访问权限控制,继承,多态
- 一个关于继承和多态的问题(思索篇)
- 一道关于继承和多态的题目
- 关于Java类、对象、继承及多态的编程实验
- 关于java继承和多态的问题
- 关于C#面向对象三个特征:继承,封装,多态的说明
- 关于类继承/初始化成员变量/构造函数/析构函数 执行顺序
- 一个关于继承和多态的问题(提问篇)
- 关于类继承/初始化成员变量/构造函数/析构函数 执行顺序
- 关于C#面向对象三个特征:继承,封装,多态的说明
- 关于Java多态和继承的一道题
- 关于ActionScript 3.0 中方法重写和继承的发现(运行时多态,原理同Java)
- 关于C语言中继承和多态的实现
- JAVA编程思想笔记【突击1】——初始化,访问权限控制,继承,多态