Если что-то не заключено в капсулу, вы открываете миру все мельчайшие мелкие детали. Это сложно, если не невозможно, изменить задним числом, потому что вы сломаете любой существующий код, который его использует.
public class Normal {
public string name; // name is public
public String getName() {
return name ;
}
public String setName(String newName) {
name = newName ;
return name ;
}
public static void main(String args[]) {
Normal normal = new Normal();
normal.setName("suhail gupta");
System.out.println( "My name is : " + normal.getName() );
}
}
класс начинается отсюда
public class Different {
private string name; // name is private
public String getName() {
return name ;
}
public String setName(String newName) {
name = newName ;
return name ;
}
public static void main(String args[]) {
Different different = new Different();
different.setName("suhail gupta");
System.out.println( "My name is : " + different.getName() );
}
}
Первый класс имеетимя объявлен открытый и другой класс имеет имя объявленочастный , Оба класса выполняют одну и ту же работу, но имеют только спецификаторы доступа для разных имен. В настоящее время,
Мои вопросы есть?
Оба класса поддерживают инкапсуляцию? Если они делают, почемуprivate
предпочтительнееpublic
? (Я сделал ту же работу, объявивимя публично, как я сделал объявлениеprivate
)Какой класс легче поддерживать?С какими классами программисты будут чувствовать себя свободно во времяrefactoring
?Какnormal
класс разные, отdifferent
класс ?Когда они говорятUnencapsulated означает неизменяемый как оно здесь не меняется?