JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
来源:互联网 发布:js 判断对象是否存在 编辑:程序博客网 时间:2024/05/16 05:02
- 父类Parent;
- 子类Child 继承Parent;
- Test类测试;
Parent child = new Child();
class Parent{ static { System.out.println("P-静态块"); } { System.out.println("P-非静态块"); } public Parent(){ System.out.println("父类构造"); } public void print(){ System.out.println("父类函数Print"); }}class Child extends Parent{ static { System.out.println("Child-静态块"); } { System.out.println("Child-非静态块"); } public Child(){ System.out.println("Child类构造"); } public void print(){ System.out.println("子类函数Print"); }}public class Test{ static { System.out.println("Test-静态块"); } { System.out.println("Test-非静态块"); } public Test(){ System.out.println("Test类构造"); } public static void main(String[] args) { Parent child =new Child(); child.print(); }}运行结果如下:
Test-静态块P-静态块Child-静态块P-非静态块父类构造Child-非静态块Child类构造子类函数Print
由此可见:
静态块:
- 优先级最高,永远被最先加载;
- 静态块是类的属性,只要是涉及到的类,都会被立刻加载(Test,Parent,Child);
- 而且只在类加载时加载一次,与类同生命周期。
非静态块:
构造函数:
- 当调用构造函数时,会先调用自己类里面的非静态块;
- 不初始化就不会调用,比如Test内的非静态块;
- 每次调用构造函数,就会调用非静态块,可以调用多次;
- 适用于创建对象之前在非静态块前清理;
P-非静态块父类构造Child-非静态块Child类构造
多态:类内多态;
- Parent print()函数;
- Child print()函数;
Parent child = new Child();
会调用子类方法,覆盖父类;
静态、非静态方法;
- 实例方法覆盖实例方法;
- 静态方法覆盖静态方法;
- 不允许一个静态(static print)、一个非静态(print),会编译报错;
Error:(26, 18) java: Child中的print()无法覆盖Parent中的print() 被覆盖的方法为static
重载按照方法签名(方法名+参数 与static无关)因而一个静态(static print)、一个非静态(print)会被视为同一函数,但是不允许一个静态的 和非静态的同时存在,一个用类名、一个用实例变量,即使能调用,也失去了多态覆盖的意义;阅读全文
0 0
- JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
- java 继承时子类父类的静态非静态成员变量,构造方法,静态代码块的初始化顺序
- java父类子类中静态块非静态块构造方法的执行顺序和继承
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- JAVA继承关系中静态代码块、非静态代码块,构造函数的执行顺序
- Java类初始化顺序问题:静态初始化块,非静态初始化块以及构造函数
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- 父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 关于Java中的静态块,非静态块,子类父类的静态块,非静态块的执行顺序
- 关于Java中的静态块,非静态块,子类父类的静态块,非静态块的执行顺序
- java类中静态域、块,非静态域、块,构造函数的初始化顺序(回钦波)
- java类中静态域、块,非静态域、块,构造函数的初始化顺序(回钦波)
- java类中静态域、块,非静态域、块,构造函数的初始化顺序
- java类静态域、块,非静态域、块,构造函数的初始化顺序
- java类静态域、块,非静态域、块,构造函数的初始化顺序
- Android系统扫描音频文件详解
- ES6 的一些新函数(不定时更新)
- WPF 利用HwndSource拦截Windows消息
- Java BigDecimal开方
- nginx环境调试确认
- JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
- css设置单行居中,多行居左/居右
- eclipse内存配置
- 二维数组中的查找
- Git 创建github远程仓库并关联本地项目
- QT收费吗?
- 欢迎使用CSDN-markdown编辑器
- Unique Binary Search Trees II --lintcode
- sleep和wait的区别