确实啊
只有private才是完全不可见的,所以封装在里面了
举个例子
class Base {
protect String a;
public method() {
..
}
}
这时如果是一个封装得很好的类,那么这个类对外的接口只有method()方法
但是里面的protect成员还是可以访问到的
现在其实我就可以继承这个类,没有任何理由,我的子类不是因为实现多态,不是因为想使用这个类给子类的通用方法,我纯粹就是为了访问这个protect方法
class Child extends Base {
public xxx() {
a="xxx";
}
}
就是这样了,子类就通过这样的方法破坏了父类的封装
也就是说随便一个类都可以访问这个字符串了
只有private才是完全不可见的,所以封装在里面了
举个例子
class Base {
protect String a;
public method() {
..
}
}
这时如果是一个封装得很好的类,那么这个类对外的接口只有method()方法
但是里面的protect成员还是可以访问到的
现在其实我就可以继承这个类,没有任何理由,我的子类不是因为实现多态,不是因为想使用这个类给子类的通用方法,我纯粹就是为了访问这个protect方法
class Child extends Base {
public xxx() {
a="xxx";
}
}
就是这样了,子类就通过这样的方法破坏了父类的封装
也就是说随便一个类都可以访问这个字符串了
只加高手.和喜欢java jsp 的朋友.
不经常在线的请不要加.
群1:4181313
群2:7346044希望通过大家的相互讨论能更丰富自己的知识.诚加诚心学习,和深入java 的朋友加入!!
我想问的是,你定义的子类中a="xxx";这个a是不是子类实例中的字段?如果是有何来破坏父类的封装性呢,我在父类中定义PROTECTED字段本来就是想让子类能够直接用它。