Java 如何在子类内部创建具有调用访问权限的方法?

Java 如何在子类内部创建具有调用访问权限的方法?,java,inheritance,encapsulation,Java,Inheritance,Encapsulation,我想给一个方法一个只有子类和当前类可以调用的访问权限。 例如: public class Parent{ something void mySetterMethod(int input){ this.something = input; } } public class Child extends Parent{ mySetterMethod(otherInput); } 但这不应该适用于: public class SomeClassInSamePackage(

我想给一个方法一个只有子类和当前类可以调用的访问权限。 例如:

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);
}

作为一条一般性建议,我们更喜欢组合而不是继承

你不能从同一个包中调用它


历史上,Java1.0有
私有保护
,尽管它显然有缺陷。

Java没有这样的访问修饰符。包内的访问仅在
private
修改器中受限制,但在子对象中不可用。您可以使用接口按使用的类型限制访问。
public class Parent { 
    public void mySetterMethod(int input){
     this.something = input;
   }
}

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