class A {
String name = "A"; 
public String getName() {
return name;

String greeting() {
return "class A";
}}class B extends A {
String name = "B";  String greeting() {
return "class B";
}
}  
public class w1 {
public static void main(String[] args) { 
A a = new A();
B b = new B();
System.out.println(a.greeting()+" has name "+a.getName());
System.out.println(b.greeting() +" has name "+b.getName()); 
}}
为什么运行结果是:
class A has name A
class B has name A

解决方案 »

  1.   

    因为B中没有重写getName方法,所以它找的是父类的方法...
      

  2.   

    System.out.println(b.greeting() +" has name "+b.getName()); 中的b.getName()调用的是A中的getName(),返回的自然是A中的name
      

  3.   

    楼上正解
    class B extends A {
    String name = "B"; 
             public String getName() {
             return name;
             } 
    String greeting() {
    return "class B";
    }
    }