通过几个例子来描述下java中的继承: 案例1: public class A { private String name="A"; public String getName(){ return name; } }
class B extends A{ private String name="B"; public String getName(){ return name; } public static void main(String args[]){ B tmp=new B(); System.out.println(tmp.getName()); } }
案例1解答:
(1)这里B类继承了A ,且重写了getName()方法,所以tmp.getName()是call的B类中的getName方法
(2)假设B中改成如下:那么此时B是直接call的父类的getName方法
class B extends A{
private String name="B";
public String getName(){ return name; }
public static void main(String args[]){
B tmp=new B();
System.out.println(tmp.getName());
}
}
案例2:
public class A { private String name="A"; public String getName(){ return name; } public void getValue(){ System.out.println(getName()); } }
class B extends A{ public String getName(){ return "B"; } public static void main(String args[]){ A tmp=new B(); System.out.println(tmp.getValue()); } }
案例2解答:(1)这里用到了A tmp=new B 这里的tmp为B对象(可以参考java中的多态概念),
这里B对象里面只有一个getName方法,但是因为B是继承A 的,所以B实际还有一个getValue()方法,可以理解编译器最后编译出来的文件是这样:所以tmp.getValue()调用的是B对象的方法
class B extends A{ public String getName(){ return "B"; } public void getValue(){ System.out.println(getName()); } public static void main(String args[]){ A tmp=new B(); System.out.println(tmp.getName()); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)