Как я могу сделать метод с доступом к вызову только внутри дочернего класса? - PullRequest
0 голосов
/ 04 марта 2020

Я хочу дать методу доступ, который могут вызывать только дочерние классы и текущий класс. Например:

public class Parent{ 
something void mySetterMethod(int input){
     this.something = input;
   }
}

public class Child extends Parent{
     mySetterMethod(otherInput);
}

, но это не должно работать для:

public class SomeClassInSamePackage(){
    public static void main(String[] args){
       Parent parent = new Parent();
       parent.mySetterMethod(input);
}

1 Ответ

0 голосов
/ 04 марта 2020

Как общий совет предпочитаю композицию наследованию .

public class Parent { 
    public void mySetterMethod(int input){
     this.something = input;
   }
}

public class Child {
    private final Parent parent = new Parent();
    ...
        parent.mySetterMethod(otherInput);
    ...
}

Вы не можете просто назвать ее из того же пакета.

Как историческая справка , Java 1.0 имел private protected, хотя, видимо, он был глючным.

...