class Test6{
public static void main(String[] args){
Super s=new Sub();//多态
System.out.println(s.a);
s.ma();
s.mb();
}
}
class Super{
int a=10;
public void ma(){
System.out.println("Super Ma");
}
public static void mb(){
System.out.println("Super Static Mb");
}
}
class Sub extends Super{
int a=20;
public void ma(){
System.out.println("Sub Ma");
}
public static void mb(){//确实已经覆盖了父类的方法
//写成Sub s=new Sub();就可以调用子类中的覆盖的方法了
//Super s=new Sub();是多态
//多态的特点:父类的引用指向子类的对象
//静态函数以及成员变量具有其特殊性,因为它们都是在类加载的时候,就已经加载到内存里了.
/*Super s=new Sub();父类引用在使用方法或成员变量时,应该遵循下面步骤:
1,在父类中是不是存在该方法或者成员变量.
2,如果存在,编译通过
3,如果调用的是成员变量,只看父类中的成员变量.
4,调用的方法是静态的,即使子类重写了该方法,jvm也会优先选择调用父类的
5,一般函数子类如果有覆盖,就调用子类的
*/
System.out.println("Sub Static Mb");
}
}
|