永发信息网

java子类能否继承父类public属性

答案:2  悬赏:10  手机版
解决时间 2021-04-23 20:05
  • 提问者网友:缘字诀
  • 2021-04-23 11:20
网上都说能继承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
最佳答案
  • 五星知识达人网友:春色三分
  • 2021-04-23 11:32
因为你在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);
    }
}
全部回答
  • 1楼网友:迟山
  • 2021-04-23 12:16
我来教你,从你的描述上看,小猫小狗理解成属性是不妥的。 简单的讲,属性是对象的性质;方法是对象的行为,习惯,动作。 示例如下,不合适的地方自己改下,注意理解: public class test2 { public static void main(string[] argv) { cat cat = new cat("ww", "白色"); cat.call(); cat.color(); } } class animal{ public animal(string name,string color){ this.name = name; this.color = color; } private string name; private string color; public void call(){ system.out.println(name +"在叫"); } public void color(){ system.out.println(name +"的颜色是" + color); } } class cat extends animal{ public cat(string name,string color){ super(name, color); } } class dog extends animal{ public dog(string name,string color){ super(name, color); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯