java子类能否继承父类public属性
网上都说能继承public属性,不能继承private属性,后者说的我赞同,前者我有质疑。publicclassA{publicStringname="aaa";}pub...
网上都说能继承public属性,不能继承private属性,后者说的我赞同,前者我有质疑。
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);
}
}
输出结果aaa 展开
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);
}
}
输出结果aaa 展开
展开全部
因为你在class B中又定义了一次name,这个name会隐藏A中定义,导致B中有自己的name和继承自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);
}
}
追问
你好,我是不是理解错了,我new的b,但输出aaa就说明,子类已经继承了父类public属性勒
追答
您好
子类会继承父类所有public属性,但为了良好封装性建议把属性设为私有,并提供get/set方法。
如果要继承父类public属性,就不要再定义同名属性(属性没有重载),子类直接可以使用父类public属性。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询