在Java中,是否可以从子类访问父类的私有方法?

在Java中,是否可以从子类访问父类的私有方法?,java,Java,如何在这种类型的父类中调用私有方法?我所做的是一个丑陋的代码集,但它可以工作,尽管我不认为这是一个真正的解决方案 如果您能就如何做到这一点提供一些建议,我将不胜感激。我一直在寻找解决办法,但这并没有让我对这件事有一定的了解 public abstract class Car { public void passItOn(int a) { takesVariable(a); } private void ta

如何在这种类型的父类中调用私有方法?我所做的是一个丑陋的代码集,但它可以工作,尽管我不认为这是一个真正的解决方案

如果您能就如何做到这一点提供一些建议,我将不胜感激。我一直在寻找解决办法,但这并没有让我对这件事有一定的了解

    public abstract class Car {

         public void passItOn(int a) {

                takesVariable(a);

         }
    private void takesVariable(int a) {

         //Process the variables
    }
孩子:

     public abstract class Wheel extends Car {

     boolean a = anotherMethod();
        if(value() != a) {
          passItOn(a);
        }

     }

我的入学率有点问题,但我正在努力!所有回复都会打+分

私有方法不被继承,因此无法调用。如果您确实想访问此方法,请更改其访问修饰符关键字(
protected
public
)。

如果您想从子类访问它,请将其设置为
protected

这是绝对不可能做到的。您不能从任何其他类(无论是扩展类)调用类的
private
方法。它只能在该类本身内部访问。据说它是私人的,这是有原因的


如果只希望扩展类而非外部世界访问该函数,请对函数使用
protected
access修饰符。

如果可以将其设置为protected,请执行以下操作:

public class BaseClass {
    protected void whatever() {}
}
或者,如果您出于某种原因希望保持其私有性,它还将使基类能够更好地控制如何/何时使用“whatever”:


如果安全管理器允许访问私有字段/方法,但强烈建议不要访问


私有方法是私有的,这是有原因的。如果您可以访问基类,那么将方法
设置为受保护的
是一个更好的解决方案。

如果您想使用它们,将方法
设置为私有的
有什么意义?如果希望在
派生类中使用
受保护类
,最好使用
受保护类
。请使用
受保护类
访问修饰符,而不是
私有类
。虽然你的问题还不清楚。我同意罗希特的观点,如果有理由不这么做——为什么会有这样的理由呢,我认为你的解决方案很有魅力!万分感谢!我知道有些东西我忽略了。我向你的功夫鞠躬致敬+1您只能为具有相同外部类的同一Java文件中的类调用私有方法。否则,
private
仅表示该类。请纠正我的错误,但私有方法也是继承的,您不能在子类中调用它们。这是因为当您从父类调用public/protected方法并且它们调用private方法时没有错误。还有其他方法吗?@HarshitGupta据我所知。
public class BaseClass {
    private void whatever() {}
    protected void doWhatever() {
        if(!forSomeReasonDoNotWantThisToBeUsed()) {        
            whatever();
        }
    }
}