Как получить доступ к закрытым переменным класса в его подклассе? - PullRequest
19 голосов
/ 13 февраля 2010

Это вопрос, который мне задали в интервью: у меня есть класс A с частными членами, а класс B - с расширением A. Я знаю, что к закрытым членам класса нельзя получить доступ, но вопрос таков: мне нужен доступ к частным членам класс A из класса B, а не создавать переменные с одинаковым значением в классе B.

Ответы [ 28 ]

0 голосов
/ 15 марта 2014

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

0 голосов
/ 12 февраля 2014

Simple !!!

public class A{
private String a;
private String b;
//getter and setter are here
}

public class B extends A{
public B(String a, String b){ //constructor
super(a,b)//from here you got access with private variable of class A
}
}

спасибо

0 голосов
/ 09 апреля 2010

Я не знаю о Java, но в некоторых языках вложенные типы могут сделать это:

    class A {
        private string someField;
        class B : A {
            void Foo() {
                someField = "abc";
            }
        }
    }

В противном случае используйте метод доступа или поле protected (хотя ими часто злоупотребляют).

0 голосов
/ 05 сентября 2013

Очевидно, что делать их защищенными или добавлять сеттеры / геттеры - предпочтительный метод.Отражение - это вариант отчаяния.

Просто чтобы похвастаться перед интервьюером, ЕСЛИ «доступ» означает доступ для чтения, а ЕСЛИ класс А генерирует XML или JSON и т. Д., Вы можете сериализовать А и проанализировать интересные поля.1003 *

0 голосов
/ 21 ноября 2014

Модификаторы - это ключевые слова, которые вы добавляете в эти определения, чтобы изменить их значения.Язык Java имеет широкий спектр модификаторов, включая следующие:

  • Модификаторы доступа Java
  • Не модификаторы доступа

Чтобы использовать модификатор,включите его ключевое слово в определение класса, метода или переменной.Модификатор предшествует остальной части оператора.

Здесь есть дополнительная информация:

http://tutorialcorejava.blogspot.in/p/java-modifier-types.html

0 голосов
/ 01 мая 2014

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

Вы можете получить доступ к личным членам, используя getter и setter .

0 голосов
/ 29 января 2016

Ниже приведен пример доступа к закрытым членам суперкласса в объекте подкласса.

Я использую конструкторы для того же.

Ниже приведен суперкласс Fruit

public class Fruit {
    private String type;

    public Fruit() {
    }

    public Fruit(String type) {
        super();
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

}

Ниже представлен подкласс Guava, который наследуется от Fruit

public class Guava extends Fruit{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Guava(String name,String type) {
        super(type);
        this.name=name;
    }
}

Ниже приведена основная функция, в которой мы создаем объектподкласс, а также отображение члена суперкласса.

public class Main {

    public static void main(String[] args) {

        Guava G1=new Guava("kanpuria", "red");
        System.out.println(G1.getName()+" "+G1.getType());

    }

}
0 голосов
/ 17 июня 2013

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

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