展开全部
因为你在class B中又定义了一次name,这个name会隐藏A中定义,导致B中有自己的name和继32313133353236313431303231363533e59b9ee7ad9431333363353764承自A的name。下面第一段是显示B类有两个name;第二段是正确使用继承;网上说法没错public class A {
public String name = "aaa";
}
public class B extends A {
public String name = "bbb";
}
public class Tets {
public static void main(String[] args) {
A a = new B();
System.out.println(a.name); //输出的A中name
System.out.println(((B)a).name); //输出B中name
B b = new B();
System.out.println(((A)b).name); //相当于你输出的A中name
System.out.println(b.name); //输出B中name
}
}public class A {
public String name = "aaa";
}
public class B extends A {
B() {
name = "bbb"; //这里的name才是继承自A的name
}
}
public class Tets {
public static void main(String[] args) {
A a = new B();
System.out.println(a.name);
}
}