如何在此类父类中调用私有方法?我所做的是一个丑陋的代码,但它起作用,虽然我不认为这是一个真正的解决方案。
非常感谢有关如何完成这项工作的一些建议。我已经找到了解决方案,但是没有给我一些明确的问题。
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);
}
}
我的会计率存在一些问题,但我就是这样!所有人都会给回复标记!!!
答案 0 :(得分:10)
如果安全管理员允许,则访问私有字段/方法is possible using reflection ,但强烈建议不要这样做。
出于某种原因,私人方法是私有的。如果您有权访问基类,那么使用方法protected
是一个更好的解决方案。
答案 1 :(得分:4)
私有方法不会被继承,因此无法调用。如果您确实想要访问此方法,请更改其访问修饰符关键字(protected
或public
)。
答案 2 :(得分:2)
如果您保持受保护,请执行此操作:
public class BaseClass {
protected void whatever() {}
}
或者如果你想因为某些原因将它保密,它也会让你的基类更好地控制使用“什么”的方式/时间:
public class BaseClass {
private void whatever() {}
protected void doWhatever() {
if(!forSomeReasonDoNotWantThisToBeUsed()) {
whatever();
}
}
}
答案 3 :(得分:1)
如果您想从子类访问它,请将其设为protected
。
答案 4 :(得分:1)
绝对没办法做到这一点。您不能从任何其他类调用类的private
方法(可以是扩展类)。它只能在该类本身内部访问。有一个原因据说是private
。
如果您希望仅通过扩展类访问它而不是外部世界,那么请为您的函数使用protected
访问修饰符。