对私有方法的递归对象访问

时间:2014-07-25 04:15:45

标签: java

为什么以下代码打印“YO”?谁叫printYo()?我认为这段代码无法编译,因为printYo()t私有的。

public class Test {
    private void printYo() {
        System.out.println("YO");
    }

    public void doubleTrouble(Test t) {
        t.printYo();
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.doubleTrouble(new Test());
    }
}

如何确保外部对象不会改变参数类?

2 个答案:

答案 0 :(得分:1)

  

printYo()对t

是私有的

没有。对于班级private,该方法为TestTest中的任何代码都可以使用它。

  

如何确保外部对象不会改变参数类?

Java没有任何内置机制来拒绝基于每个实例访问成员。 (如果这就是你的意思。)

答案 1 :(得分:0)

您正在类中调用方法,这对于输出来说是正确的。即使您从不同的类调用main方法,它也会提供相同的输出。