java - 理解java中的继承

标签 java

虽然我还没有完全研究继承,但我正在练习从书中学到的一些继承概念,但我想只写一个基于继承的简单程序就可以了

public class InheritanceInJava
{
    public static void main(String args[])
    {
       SupperClass_A supperObj_A = new SupperClass_A(20,30,10);
       SubClass_A subObj_A = new SubClass_A(10,20,30);
       System.out.println(subObj_A.Add());
       System.out.println(subObj_A.Multiply());
    }
}

class SupperClass_A
{
   int num1 ; int num2 ; int num3 ;
   SupperClass_A(int a, int b, int c)
   {
      num1 = a ; num2 = b ; num3 = c;
   }
  public int Multiply()
  {
     return num1 * num2 * num3;
  }
}

class SubClass_A extends SupperClass_A
{
  SubClass_A(int a, int b, int c)
  {
      num1 = a ; num2 = b ; num3 = c;
  }
  public int Add()
  {
      return num1 + num2 + num3;
  }
}

但它显示了一个错误:

类 SupperClass_A 中的构造函数 SupperClass_A 不能应用于给定类型; { ^ 要求:整数,整数,整数 发现:没有参数 原因:实际和形式参数列表的长度不同

谁能帮我理解为什么这个程序不工作,这个错误的原因是什么?

最佳答案

问题是您的 SubClass_A 构造函数试图隐式调用 SupperClass_A 的无参数构造函数,它不存在。编译器只为没有任何显式定义的构造函数的类自动生成无参数构造函数。

您可以通过显式调用父类(super class)构造函数来修复它:

class SubClass_A extends SupperClass_A
{
  SubClass_A(int a, int b, int c)
  {
      super(a,b,c);
  }
  public int Add()
  {
      return num1 + num2 + num3;
  }
}

关于java - 理解java中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40284970/

相关文章:

java - JUnit Test Case需要测试一个目录

Java StringBuilder 与indexOf

java - 在 JDateChooser 中选择日期时,日期不正确。为什么?

java - 检查(未)检查异常 (Java)

java - 如何使用java检查本体一致性

java - 如何在编辑文本中添加可触摸的 ImageView ?

Java 1.4 + 可扩展构建器模式

java - 在制作Android SDK时,有没有一种方法可以不断更新开发人员的值,而无需他们传递 View ?

java - 来自后台线程的处理程序 postDelayed()

java - 使用 AES 在 Java 和 Python 中加密/解密