1. ホーム
  2. java

[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない

2022-01-19 13:02:38

質問

サブクラスが2つあります。Staff、Student これらはスーパークラスPersonに属しています。

以下は、先生から渡されたコード(タスク)です。


前 {コード
前 {{コード
前 {{コード

パラメータなしでオブジェクトを作成するために、何を入力すればよいのかわかりません。 コンストラクタPerson in class Person cannot be applied to given types; required: java.lang.String,int というようなエラーが常に表示されます。

ネットで調べたところ、2つの解決方法があるようです。

{を使用します。
  • スーパークラスにデフォルト値を追加する。 public class Person { private String name; private int yearOfBirth; /** * Create a person with given name and age. */ Person(String name, int yearOfBirth) { this.name = name; this.yearOfBirth = yearOfBirth; } } .

    サブクラスのStudentで

  • class Student extends Person
    {
    
       private String SID;    // student ID number
    
       /**
        * Create a student with no parameters.
        */
    
       Student()
       {
        //task.
       }
    }
    
    1. サブクラスにsuper()を追加する。
    public class Staff extends Person
    {
    
       private String roomNumber;
    
       /**
        * Construct a staff member with field values and no pamaeters.
        */
       public Staff()
       {
        //task 
       }
    }
    

    どうしたらいいのかわからない。私はBlueJを学ぶためのスターターです。 どなたか助けていただけると幸いです。どうもありがとうございました。

    解決方法は?

    スーパークラスから Person()//without parameter はデフォルトのコンストラクタを持たないので、サブクラス ( {コード と {コード ) の場合、最初のステートメントとしてスーパークラスのコンストラクタを呼び出す必要があります。

    サブクラスのコンストラクタはこのように定義する必要があります。

    Student()
      {
      Person astudent = new Student() //I guess.
      }
    

    前 {{コード