Java 我能';不要将一个类扩展到另一个具有构造函数的类

Java 我能';不要将一个类扩展到另一个具有构造函数的类,java,Java,在继承中,我们了解到要访问另一个类的方法,我们应该编写“extends(父类)”。嗯,它是强文本工作。但是我创建了一个类“People”,其中包含构造函数“People”。我创建了另一个类“Player”。每当我试图将“Player”类扩展为“People”类时,就会显示错误(表示…“构造函数Player未定义”) 。如何处理此问题?您需要在Player类中创建一个构造函数,该构造函数具有以下所需参数 public Player(String x,int y,String d){} 因为您没

在继承中,我们了解到要访问另一个类的方法,我们应该编写“extends(父类)”。嗯,它是强文本工作。但是我创建了一个类“People”,其中包含构造函数“People”。我创建了另一个类“Player”。每当我试图将“Player”类扩展为“People”类时,就会显示错误(表示…“构造函数Player未定义”)


。如何处理此问题?

您需要在Player类中创建一个构造函数,该构造函数具有以下所需参数

public Player(String x,int y,String d){}
因为您没有使用类Player的空构造函数 或者你可以这样做

Player player = new People("",some int value,"");

这是因为在子类中没有定义类似的参数构造函数。有两种方法可以解决此问题

  • 如果要创建对象并使用构造函数初始化参数。 在Player类中创建构造函数

    public Player(String name, String age, String hairColor) {
     super(a);
    }
    
  • 使用此构造函数创建对象,就像在main方法中所做的那样

  • 如果您不想使用参数化构造函数创建对象,而是想使用setter方法。 在父类(人员)中定义默认构造函数,这样就不需要在子类中创建任何构造函数 如果您在类中创建了任何构造函数(在您的例子中是People),编译器不会创建默认构造函数(无参数构造函数),而且您还没有在Player类中创建任何构造函数,所以编译器会在您的Player类中创建默认构造函数

        Public Player(){
        super();
        }
    
    但是人没有默认的构造函数,所以调用
    super()
    将抛出编译错误,这就是为什么必须创建参数化构造函数的原因。因此,只需在People类中创建一个默认构造函数并使用setter方法:

        public People(){
    
        }
    

    是的,因此您需要在
    Player
    中声明一个构造函数,该构造函数使用
    super(…)
    委托给
    People
    构造函数。现在还不清楚你是如何学习Java的,但是在你使用的关于构造函数的任何书籍/教程中都应该有一个完整的部分-你想要一个关于链接到另一个构造函数的部分。是吗?构造函数播放器没有定义,但是你尝试过定义它吗?Eclipse建议您为您生成它(请参见该行左侧的图标)谢谢大家,它非常有用。请不要对代码截图提出疑问。复制/粘贴代码本身-更易于阅读。