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

时间:2012-12-18 16:15:07

标签: java

如何在此类父类中调用私有方法?我所做的是一个丑陋的代码,但它起作用,虽然我不认为这是一个真正的解决方案。

非常感谢有关如何完成这项工作的一些建议。我已经找到了解决方案,但是没有给我一些明确的问题。

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

     }

我的会计率存在一些问题,但我就是这样!所有人都会给回复标记!!!

5 个答案:

答案 0 :(得分:10)

如果安全管理员允许,则访问私有字段/方法is possible using reflection ,但强烈建议不要这样做。

出于某种原因,私人方法是私有的。如果您有权访问基类,那么使用方法protected是一个更好的解决方案。

答案 1 :(得分:4)

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

答案 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访问修饰符。