2016-11-25 7 views
1

Как я наткнулся на инкапсуляцию во время изучения Java. Одним из преимуществ использования Getters и Setters, в соответствии с , является:Java - изменение типа данных при использовании Getters & Setters

«Пользователи класса не знают, как класс хранит свои данные. Класс может изменять тип данных поля и пользователей класс не нужно менять ни один из их кодов ».

Но я не совсем уверен, что это значит. Означает ли это, что:

private String name; 

может быть изменен на:

private int name; ? 

Я был бы признателен, если кто-то может привести пример в отношении к этому.

+0

Вы имеете в виду, что произойдет, если пользователь вводит целое значение вместо строки? – SMW

+0

Да. Я так и думал. Но я вижу, что одна из вещей, которые я могу сделать, это изменить нестационарную переменную на статическую переменную. Я все еще не уверен, что еще я могу с этим сделать. –

ответ

0

Да, например, если имеется только фиксированное число возможных имен, то, возможно, класс будет меняться от:

class Thing 
{ 
    private String m_name; 
    .... 
    public String getName() 
    { 
     return m_name; 
    } 
    ... 
} 

в

class Thing 
{ 
    private static String[] POSSIBLE_NAMES = ... 

    private int m_nameIndex; 
    .... 
    public String getName() 
    { 
     return POSSIBLE_NAMES[m_nameIndex]; 
    } 
    ... 
} 

Дело в том, что добытчик указывает на то, что объект имеет имя и может сообщить об этом вам, когда вы спросите, но объект может хранить или подсчитывать это имя, но ему нравится.

+0

Спасибо за пример. Но я все еще новичок в Java и не совсем понимаю. Таким образом, вы можете добавить другую переменную и изменить что-либо внутри получателя? –

+0

Вы можете делать все, что захотите внутри получателя, без изменения кода, который его вызывает. –

0

Класс может изменить тип данных поля

Я думаю, что это неправильно thing.its не тип данных его Модификаторы доступа когда мы используем личные модификаторы доступа, переменная видна в классе только. общедоступные методы - это точки доступа к полям этого класса из внешнего java-мира. Обычно эти методы называются геттерами и сеттерами. Поэтому любой класс, который хочет получить доступ к переменным, должен получить к ним доступ через эти геттеры и сеттеры. Нужно изменить private String name; на public String name;

 Смежные вопросы

  • Нет связанных вопросов^_^