首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-02-17 
父类应用指向子类对象,我这种写不知道哪里错了,请帮我看看小弟初接触Java,请各位高手帮我修改下,Java code

父类应用指向子类对象,我这种写不知道哪里错了,请帮我看看
小弟初接触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) {


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);

}
}

热点排行
Bad Request.