使用对象访问私有方法

时间:2010-10-21 03:53:37

标签: c# java oop

在此代码中:

public class Main{
    private void method()
    {
        System.out.println("inside method");
    }
    public static void main(String[] args) {
    Main obj = new Main();
    obj.method();
    }
}

为什么我们在课堂上时可以使用类中的对象访问私有方法,而我们不能在课外进行访问? (我的意思是什么是合乎逻辑的原因?)

另一种情况是:main方法是静态的,那么为什么没有编译器错误抱怨“从静态方法访问非静态方法”??

3 个答案:

答案 0 :(得分:6)

  1. 因为它是私人的。类本身可以使用其私有属性和行为。外部课程不能使用的原因是阻止外部课程干涉私人事务。简单不是吗?

  2. 这里实际上是使用实例上下文调用方法。尝试在没有obj的情况下调用它肯定会抱怨。顺便说一句,谁说你不能从静态方法访问非静态方法。实际上,您无法在静态上下文中调用非静态方法。

答案 1 :(得分:3)

你的困惑来自于对private的含义的误解。 private关键字表示只能从包含的上下文中的声明类`,的上下文中访问该成员实例。您可以自己调用私有方法(最常见的)或相同或派生类型的其他实例(如您所示)。

在静态方法中调用实例方法没有问题,但是你必须有一个实例来调用它们(你有obj)。

答案 2 :(得分:2)

回答你的第二个问题: - 你是通过该类的对象调用该方法,但如果你直接调用该方法,它将给你一个错误,用于从静态方法访问非静态方法。

第一个: - 你从类中调用方法,类可以使用它的私有成员