java - 扩展三角形文件

标签 java inheritance super

类 Equiside 和 IsoscelesRight 扩展了 Triangle 类。我不知道如何使用 super() 方法。我应该使用它,但它让我感到困惑。它的目的是什么?我怎样才能让它发挥作用?我必须重命名实例变量吗?当我尝试编译时,它说它无法识别符号 super。 感谢您的帮助。

public class Triangle
{
// instance variables 
 private double sideA, sideB, sideC;

public Triangle(double side1, double side2, double side3)
{
// initialise instance variables
 sideA = side1;
 sideB = side2;
 sideC = side3;
}

public double getSideA()
{
 return sideA;
}
public double getSideB()
{
 return sideB;
}
public double getSideC()
{
 return sideC;
}

}

public class Equilateral extends Triangle
{
// instance variables 
private double side1, side2, side3;

/**
 * Constructor for objects of class box
*/
public Equilateral(double sideA)
{
// call superclass
super(sideA);
 // initialise instance variables
 side1 = sideA;
 side2 = sideA;
 side3 = sideA;
}

}


public class IsoscelesRight extends Triangle
{
// instance variables 
private double sideA, sideB, sideC;

/**
 * Constructor for objects of class box
 */
 public IsoscelesRight(double side1, double side2)
{
 // call superclass
 super(side1);
 // initialise instance variables
 sideA = side1;
 sideB = side1;
 sideC = Math.pow(sideA*2,2);
}

}

最佳答案

这里有几件事:

  1. 正如 @Juned Ahsan 所指出的,您正在尝试调用一个不存在的构造函数。
  2. 您正在子类中定义与父类(super class)同名的字段。

您可以简单地将它们定义为:

public class Equilateral extends Triangle
{
    public Equilateral(double sideA)
    {
        super(sideA, sideA, sideA);
    }
}

public class IsoscelesRight extends Triangle
{
    public IsoscelesRight(double sideA)
    {
        super(sideA, sideA, Math.sqrt(2*sideA*sideA));
    }
}

然后通过 getSideA 等 getter 访问边长。

关于java - 扩展三角形文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28131698/

相关文章:

javascript - ES6 (Babel) - 不能在类定义之外调用扩展类的 super.methodName

javascript - javascript super 调用中变异了 'this',如何处理?

继承中的java异常处理

java - 将方法委托(delegate)给Java中的子类

java - 通过 void 方法将变量从父类(super class)传递给子类

Javascript::为什么 Object.hasOwnProperty ('caller' ) 返回 true?

java - 理解 Java super() 构造函数

java.lang.RuntimeException : Unable to instantiate @Form class. 没有无参数构造函数

java - 如何使用Java访问另一个类的私有(private)字段中的私有(private)字段

java - 无法在 eclipse 中使用mockito验证方法调用