对私人成员的继承

时间:2014-02-12 01:26:04

标签: java inheritance

    class Quadrilateral
    {
        private Point TL;
        private Point TR;
        private Point BR;
        private Point BL;
        public Quadrilateral(Point p1, Point p2, Point p3, Point p4)
        {
            TL = p1;
            TR = p2;
            BR = p3;
            BL = p4;
        }

    } 
class Point
{
public double x;
public double y;
    Point(double a, double b)
    {
        x = a;
        y = b;
    }

}
class trapezoid extends Quadrilateral
{
    public trapezoid(Point p1, Point p2, Point p3, Point p4)
    {
        super(p1,p2,p3,p4);
    }
        public double areaofTrapezoid()
        {
            return ((((TR.x-TL.x)+(BR.x-BL.x))/2)*(TL.y-BL.y));
        }
}

我试图访问TR,TL,BR和BL中的x和y值,但我不想在类四边形中创建像getxofTL,getyofTL,getxofBR等函数。如何在不更改变量的访问说明符的情况下访问子类中的那些值。

2 个答案:

答案 0 :(得分:1)

子类不能直接访问私有成员(而不是受保护的成员)。因此,除非你想使用反射(你不应该使用反射!),你应该使用公共/受保护的访问器。

我想不出有什么理由为什么你不想要这样的吸气剂,除了创造它们的潜在麻烦。请注意,大多数IDE都可以自动为您执行此操作。

供参考,请参阅Controlling Access to Members of a Class

答案 1 :(得分:1)

您必须公开这些字段或添加getter方法。制作getter方法通常比将字段公开更受欢迎。

这是一个关于访问说明符的有用页面,包括一个方便的表:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

资料来源:AP计算机科学课