为什么在compareTo中可以访问类的私有成员?

时间:2014-03-01 08:45:10

标签: java private

我写了下面的类来讨论Comparable / Serializable接口。

package testpro;

public class SerialTest implements Comparable {
    private int circleSize = 10;

    private int getCircleSize() {
    return circleSize;
    }

    @Override
    public int compareTo(Object o) {
    SerialTest object = (SerialTest) o;
    if(getCircleSize()>object.getCircleSize()){ // I can access object.getCircleSize() here, but it's private.. why?
        return 1;
    }
    else if(getCircleSize()<object.getCircleSize()){// I can access object.getCircleSize() here, but it's private.. why?
        return -1;
    }
    else{
        return 0;
    }
    }
}

我将一个Object o传递给compareTo()方法,但getCircleSize()是私有的。那怎么可能,我有权访问这个? 我很确定C ++不会放过它。

4 个答案:

答案 0 :(得分:6)

私人意味着只能从同一个班级访问。在将Object o投射到SerialTest object后, 在同一个班级中。

答案 1 :(得分:2)

私有方法可以在类本身中访问。由于两种方法都存在于同一个类中,因此不存在访问它的问题。

  

private修饰符指定只能访问该成员   它自己的班级。

查看here了解详情

答案 2 :(得分:0)

您可以从同一个班级访问私人会员。您重写方法compareTo(),然后您可以访问您的私人成员。

对于没有来自其他类的访问者的私有成员,您不能这样做。

您可以从link了解到这一点。

答案 3 :(得分:0)

其他类无法访问

private。但是在课堂上它可以进行编程。例如您的代码,您可以在生成结果时使用类中的所有私有标识符或方法。

C ++也提供此功能。您可以在类或方法中轻松使用私有方法,以生成函数调用的响应。这很简单,合法!