向上转型
class B extends A , A B都有方法run(),算了 看代码吧
public class test03extends
{
public static void main(String args[]){
A a=new A();
B b=new B();
A c=new B();
a.run();
b.run();
c.run();
}
}
public class A
{
public void run(){
System.out.println("A run");
}
}
public class B extends A
{
public void run(){
this.brun();
}
private void brun(){
System.out.println("B run");
}
}
输出结果:
将brun改为public,在main中c.brun
编译出错:The method brun() is undefined for the type A
即:向上转型后的类不能使用父类中未定义的方法,但是子类自己可以调用父类中未定义的方法
给b类加成员变量
public class B extends A
{
public String s="1";
private String ss="ss";
public void run(){
this.brun();
}
public void brun(){
System.out.println("B run");
System.out.println(s+ss);
}
}
输出结果:
但是
父类未定义的成员变量不能用
想用就得向下转型
向下转型
public static void main(String args[]){
A a=new A();
B b=new B();
A c=new B();
a.run();
b.run();
c.run();
//c.s;
B d=(B)c;
d.brun();
System.out.println(d.s);
}
首先要声明个B型变量d,指向强转为B的c
这样b的方法,变量都能开放使用了(此时brun为public)
输出结果:
更新中