public static void main(String []args){
Father f = new Son();
System.out.println(f.x);
//f.show();
}
}
//父类
class Father{
int x = 20;
public void show(){
//int x = 60 ;
System.out.println( x );
}
}
class Son extends Father{
int x = 5;
public void show(){
//int x = 90 ;
System.out.println( x );
}
}
非静态成员变量:
编译时期,参考父类中的成员变量,如果有编译成功,没有编译失败
运行时期,参考父类中的成员变量
int x = 20;
int x = 5;
Father f = new Son();
System.out.println(f.x);
20
静态成员变量:
编译时期,参考父类中的成员变量,如果有编译成功,没有编译失败
运行时期,参考父类中的成员变量
Static int x = 20;
Static int x = 5;
Father f = new Son();
System.out.println(f.x);
20
非静态成员方法:
编译时期,参考父类中的成员方法,如果有编译成功,没有编译失败
运行时期,运行的是子类重写后的方法,如果子类没重写,运行父类的
public void show(){
//int x = 60 ;
System.out.println( x );
}
f.show(); -----> 5
静态成员方法:
编译时期,参考父类中的静态成员方法,如果有编译成功,没有编译失败
运行时期,运行父类中的静态成员方法
public static void show(){
//int x = 60 ;
System.out.println( x );
}
f.show(); -----> 20
简单的说:
除了非静态的成员方法以外,编译看左边,运行看左边 Fu f = new Zi() ; 等于号的左边