通过几个例子来描述下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());
}
}



