当前位置: 代码迷 >> J2SE >> 父类应用指向子类对象,小弟我这种写不知道错哪了,请帮小弟我看看
  详细解决方案

父类应用指向子类对象,小弟我这种写不知道错哪了,请帮小弟我看看

热度:109   发布时间:2016-04-24 12:30:14.0
父类应用指向子类对象,我这种写不知道哪里错了,请帮我看看
小弟初接触Java,请各位高手帮我修改下,
Java code
class Animals{    private String color;    private int high;    Animals(){    }    Animals(String color,int high){        this.color = color;        this.high = high;    }        public void info(Animals a){        System.out.println("color="+a.color);        if (a instanceof Bird)        {            Bird bird = (Bird) a;            System.out.println("name="+bird.name+"  high="+bird.high);        }        else             System.out.println("I'd not konw who is this");        }}class Bird extends Animals{    private String name;    Bird(){    }    Bird(String name,String color,int high){        super(color,high);        this.name = name;    }    }public class FatherSub{    public static void main(String arg[]){    Animals a = new Animals();    Bird b = new Bird("john","blue",12);    a.info(b);}}


错误提示:FatherSub.java:28: name has private access in Bird
System.out.println("name="+bird.name+" high="+bird.high);
  ^
FatherSub.java:28: high has private access in Animals
System.out.println("name="+bird.name+" high="+bird.high);
  ^
2 errors

------解决方案--------------------
因为name是Bird的,你想在Animal里面用了
可以在Bird定义一个public String getName() {return name}

然后在需要用到Bird的name的地方用getName返回就好
------解决方案--------------------
类中的private 属性 ,写上getter和 setter方法 ,使用的时候 用xxx.getName() ;
------解决方案--------------------
Java code
package test;class Animals{    private String color;    private int high;    Animals(){}    Animals(String color,int high){        this.color = color;        this.setHigh(high);    }        public void info(Animals a){        System.out.println("color="+a.color);        if (a instanceof Bird){            Bird bird = (Bird) a;            System.out.println("name="+bird.getName()+"  high="+bird.getHigh());        }else             System.out.println("I'd not konw who is this");    }        public void setHigh(int high) {        this.high = high;    }    public int getHigh() {        return high;    }}class Bird extends Animals{    private String name;    Bird(){}    Bird(String name,String color,int high){        super(color,high);        this.setName(name);    }    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }    }public class FatherSub{    public static void main(String arg[]){        Animals a = new Animals();        Bird b = new Bird("john","blue",12);        a.info(b);    }}
------解决方案--------------------
class Animals {
private String color;
protected int high;

Animals() {
}

Animals(String color, int high) {
this.color = color;
this.high = high;
}

public void info(Animals a) {
System.out.println("color=" + a.color);
if (a instanceof Bird) {
Bird bird = (Bird) a;
System.out.println("name=" + bird.name + " high=" + bird.high);
} else
System.out.println("I'd not konw who is this");
}
}

class Bird extends Animals {
String name;

Bird() {
}

Bird(String name, String color, int high) {
  相关解决方案