2

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

非常感谢一些关于如何完成的建议。我一直在寻找解决方案,但没有让我对此事有所了解。

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

     }

我的录取率有一些问题,但我已经解决了!全部回复+分!!!

4

5 回答 5

10

如果安全管理器允许,则可以使用反射 访问私有字段/方法,但强烈建议不要这样做。

私有方法是私有的是有原因的。如果您可以访问基类,则制作该方法protected是一个更好的解决方案。

于 2012-12-18T16:26:09.810 回答
4

私有方法不被继承,因此不能被调用。如果您真的想访问此方法,请更改其访问修饰符关键字(protectedpublic)。

于 2012-12-18T16:17:11.147 回答
2

如果您可以将其保护起来,请执行此操作:

public class BaseClass {
    protected void whatever() {}
}

或者,如果您出于某种原因想将其保密,并且它还将使您的基类能够更好地控制“whatever”的使用方式/时间:

public class BaseClass {
    private void whatever() {}
    protected void doWhatever() {
        if(!forSomeReasonDoNotWantThisToBeUsed()) {        
            whatever();
        }
    }
}
于 2012-12-18T16:20:14.943 回答
1

protected如果您想从子类中获得它,请制作它。

于 2012-12-18T16:17:53.940 回答
1

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

如果您希望它只被扩展类而不是外部世界访问,那么protected对您的函数使用访问修饰符。

于 2012-12-18T16:20:13.850 回答