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