这里,我了解到子类违反了封装:
它违反了封装,因为超类和子类的实现变得紧密耦合。
例如,如果我们考虑下面的Java语法,class可以访问它的超类的所有字段和方法,只要它们没有声明为private。
class Person{
private String name;
String address;
//methods of class Person
}
class Employee extends Person{
float salary;
private Employee immedateManager;
private raiseSalary(float raise){...}
}
class Manager extends Employee{
String department;
void test(){
name = "Fred"; //compiler error, could not break encapsulation
salary = 70000.00f;
address = "somewhere";
immediateManager = "Slate"; //compiler error, could not break encapsulation
raiseSalary(1234.0); //compiler error, could not break encapsulation
}
}那么,如果类型抽象的表示部分(Java class)声明为private,那么在说子类违反封装之前,人们是如何理解的呢?
发布于 2015-06-16 13:12:51
这与隐私无关。类的一个组成部分不再在类中实现。从定义上说,这是封装的丢失。
然而,面向对象的程序员有时非常重视类级封装.继承的其他问题(如耦合)更为重要,在其他适当继承的情况下,封装丢失不应困扰您。
https://softwareengineering.stackexchange.com/questions/286908
复制相似问题