HOWTO · Java

Java が Cannot Instantiate the Type 問題を修正

Java が Cannot Instantiate the Type 問題を修正

今日は、Java で Cannot Instantiate the Type というエラーを修正する方法を学びます。

このタイプのエラーは、抽象クラスのインスタンスを作成しようとしたときに発生します。Java の抽象クラスについて少し学びましょう。

Java の cannot instantiate the type エラーの修正

すべてのコンポーネントに共通の機能を提供する必要がある場合は、通常、抽象クラスを使用します。クラスを部分的に実装できるようになります。

すべてのサブクラスがオーバーライドまたは実装できる機能を生成できるようになります。ただし、抽象クラスをインスタンス化することはできません。

次のコードを見てください。

abstract class Account { // abstract class Cannot Be initiated...
  private int amount;
  Account() {
    // constructor............
  }
  public void withDraw(int amount) {
    this.amount = this.amount - amount;
  }
}

上記の抽象クラス Account はインスタンス化できません。つまり、次のコードを書くことはできません。

Account acc = new Account(); // Abstract Cannot Intialized......

それで、解決策は何ですか?この抽象クラスの具象/子クラスを作成し、そのインスタンスを作成できます。

たとえば、非常に多くの種類のアカウントがあります。それらは、貯蓄、ビジネス、借方、および大いに多くである可能性があります。

しかし、それらはすべて実際のアカウントであり、それは彼らに共通していることです。そのため、抽象メソッドとクラスを使用します。

次のコードを見てください。

class BusinessAccount extends Account {
  private int Bonus;
  public void AwardBonus(int amount) {
    this.Bonus = Bonus + amount;
  }
}

BusinessAccount クラスは、抽象 Account クラスの具象クラスと子クラスです。このクラスのインスタンスを作成して、作業を完了することができます。

BusinessAccount bb = new BusinessAccount();
// Bussiness Account Can Be intiated Because there is concreate defination..........

したがって、結論として、抽象クラスをインスタンス化することはできません。代わりに、その子クラスを作成して、同じ機能のためにインスタンス化することができます。

以下は、コンピューターで実行できる完全なコードです。

abstract class Account { // abstract class Cannot Be intiated...
  private int amount;
  Account() {
    // constructor............
  }
  public void withDraw(int amount) {
    this.amount = this.amount - amount;
  }
}
class BusinessAccount extends Account {
  private int Bonus;
  public void AwardBonus(int amount) {
    this.Bonus = Bonus + amount;
  }
}
public class Main {
  public static void main(String[] args) {
    // Account acc = new Account(); // Abstract Cannot Intialized......
    BusinessAccount bb = new BusinessAccount();
    // Bussiness Account Can Be intiated Because there is concreate defination..........
  }
}

抽象クラスの詳細については、ここををクリックしてください。