Java 继承加载顺序 以及 多态中变量和方法
来源:互联网 发布:开淘宝店应该注意什么 编辑:程序博客网 时间:2024/06/06 09:16
很基础总是忘 记录一下Java 继承加载顺序 class Test0 { public static String staticField = "父类-静态变量"; public String field = "父类-普通变量"; public Test0() { System.out.println("父类-构造器"); } static { System.out.println(staticField); System.out.println("父类-静态初始化块"); } { System.out.println(field); System.out.println("父类-初始化块"); }}public class Test1 extends Test0{ public static String staticField = "子类*静态变量"; public String field = "子类*普通变量"; static { System.out.println(staticField); System.out.println("子类*静态初始化块"); } { System.out.println(field); System.out.println("子类*初始化块"); } public Test1() { System.out.println("子类*子类构造器"); } public static void main(String args[]) { System.out.println("main方法"); Test1 test1 = new Test1(); }}输出结果为:父类-静态变量父类-静态初始化块子类*静态变量子类*静态初始化块main方法父类-普通变量父类-初始化块父类-构造器子类*普通变量子类*初始化块子类*子类构造器
最后给出执行步骤:
1、父类静态变量和静态代码块(先声明的先执行);
2、子类静态变量和静态代码块(先声明的先执行);
3、父类的变量和代码块(先声明的先执行);
4、父类的构造函数;
5、子类的变量和代码块(先声明的先执行);
6、子类的构造函数。
多态中变量和方法
class Fathers{ String var="FatherVar"; static String staticVar="StaticFatherVar"; void method(){System.out.println("Father method");} static void staticMethod(){System.out.println("Static Father method");}}class Sons extends Fathers{ String var="SonVar"; static String staticVar="StaticSonVar"; void method(){System.out.println("Son method");} static void staticMethod(){System.out.println("Static Son method");} String sonVar=null; void sonMethod(){}}public static void main(String[] args) {
// TODO Auto-generated method stub
Fathers f = new Sons();
System.out.println("f.var=" + f.var);
System.out.println("f.staticVar=" + f.staticVar);
Sons ff=(Sons)f;
System.out.println("ff.var=" + ff.var);
System.out.println("ff.staticVar=" + ff.staticVar);
f.method();
f.staticMethod();
}
结果:
f.var=FatherVar
f.staticVar=StaticFatherVar
ff.var=SonVar
ff.staticVar=StaticSonVar
Son method
Static Father method
总结:
成员变量、静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定
- Java 继承加载顺序 以及 多态中变量和方法
- java中实例变量、类变量以及构造方法的加载顺序
- Java继承和静态-加载顺序
- java语法变量、继承变量和继承方法
- java 类中变量,方法加载顺序和造成的问题。
- java 继承类加载顺序
- Java中子类、父类、变量、static方法的加载顺序
- Java继承之间类的加载顺序, 以及代码块、构造块的执行顺序
- Java继承和多态===Java static关键字以及Java静态变量和静态方法
- java 继承成员变量和继承方法的区别
- java静态变量加载顺序
- java变量的加载顺序
- Java---类加载机制,构造方法,静态变量,(静态)代码块,父类,变量加载顺序
- java中静态块以及方法快的加载顺序
- java中静态块和静态变量的加载顺序
- Java中的继承关系的加载顺序
- 再探Java中的继承加载顺序
- static相关--------方法变量:加载顺序
- Hometask--codeForces 214B
- hibernate第一天
- 在Spring3中,配置DataSource的方法
- Hibernate 入门
- Zygote进程功能笔记
- Java 继承加载顺序 以及 多态中变量和方法
- 关于Linux操作系统的开机过程详解
- Java Socket实战之三 传输对象
- 消息模式Toast.makeText用法
- SSH服务器登录慢的解决办法
- Intellij IDEA常用配置详解
- 功能强大的JS虚拟键盘
- Color Stripe--codeForces 219C
- Android开发精要1--Android系统架构