Qui , ho appreso che la sottoclassificazione viola l'incapsulamento:
it violates encapsulation, since the implementations of the superclass and subclass become tightly coupled
Ad esempio, se consideriamo la sintassi Java sottostante, un class
ha accesso a tutti i campi e i metodi della sua super classe a condizione che non siano dichiarati 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
}
}
Quindi, se la parte di rappresentazione dell'astrazione di tipo (Java class
) è dichiarata private
, allora come si comprende prima di dire che la sottoclassificazione viola l'incapsulamento?