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
展开
 我来答
名酒酒窖
2017-01-09 · 超过13用户采纳过TA的回答
知道答主
回答量:18
采纳率:0%
帮助的人:18.7万
展开全部

因为你在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属性。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式