我是JAVA的新手,我正试图了解继承的原理。
我有3节课:
package dziedziczenie2;
public class Kobieta {
protected Oczy Eyes = new Oczy();
public static void main(String[] args) {
Kobieta x = new Kobieta();
System.out.println(x.Eyes); // blue
x.Eyes.kolor = "red";
System.out.println(x.Eyes); // red
}
}
class Oczy{
public String kolor = "blue";
public String toString(){
return kolor;
}
}
其他套餐:
package dziedziczenie;
import dziedziczenie2.Kobieta;
public class Ania extends Kobieta{
public static void main(String[] args) {
Ania x = new Ania();
System.out.println(x.Eyes); // blue
x.Eyes.kolor = "red"; // type Oczy not visable
}
}
我的问题是,为什么我不能仅通过键入x.Eyes.kolor来更改Ania类中的Eye.kolor。
我知道Oczy不是公开的,但是我可以某种方式使用它的toString方法。
编辑:为什么我可以使用它的toSting方法而不能使用它的成员?
每当我想与其他软件包中的Oczy成员进行交互时,我是否必须在Kobieta中制定一种与Oczy成员进行交互的方法?
提前致谢
最佳答案
Oczy类具有访问修饰符“默认”,只能在“ dziedziczenie2”包中访问,而不能在“ dziedziczenie”包中访问。
1)选项:
您可以简单地通过声明公共类Oczy来创建文件Oczy.java,然后完成。
2)选项:
您可以像这样在Kobieta类中声明公共静态类Oczy。
public class Kobieta {
// ur code
public static class Oczy {
// ur code
}
}