ホームページ >Java >&#&チュートリアル >Javaメソッドが実装されていない例外(MethodNotImplementedException)の解決方法

Javaメソッドが実装されていない例外(MethodNotImplementedException)の解決方法

PHPz
PHPzオリジナル
2023-08-18 20:55:501717ブラウズ

Javaメソッドが実装されていない例外(MethodNotImplementedException)の解決方法

Java メソッドが実装されていない例外 (MethodNotImplementedException) を解決する方法

Java 開発では、メソッドが実装されていない例外 (MethodNotImplementedException) が発生することがあります。よくある間違い。この例外は、抽象メソッドまたはインターフェイス内のメソッドを宣言しても、そのメソッドを具体的な実装クラスに実装していない場合にスローされます。この記事では、Java メソッドが実装されていない例外を解決する方法を説明し、理解を助けるためにいくつかのコード例を示します。

Java メソッドが実装されていない例外を解決する最も一般的な方法は、不足しているメソッドを実装することです。新しいクラスを作成して、抽象メソッドまたはインターフェイスに存在しないメソッドを実装できます。以下はサンプル コードです:

public interface Animal {
    void eat();
    void sleep();
}

public class Cat implements Animal {
    @Override
    public void eat() {
        System.out.println("Cat is eating");
    }
    
    @Override
    public void sleep() {
        System.out.println("Cat is sleeping");
    }
}

public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
    
    @Override
    public void sleep() {
        System.out.println("Dog is sleeping");
    }
    
    public void bark() {
        System.out.println("Dog is barking");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal cat = new Cat();
        cat.eat();
        cat.sleep();
        
        Animal dog = new Dog();
        dog.eat();
        dog.sleep();
        
        // dog.bark(); // 编译错误,Animal接口中没有定义bark()方法
    }
}

上の例では、eat()sleep( )# を含む Animal インターフェイスを定義します。 ##2 つの方法。次に、2 つの具象クラス CatDog を作成し、それぞれ Animal インターフェイスを実装し、eat() sleep() メソッド。 Dog クラスには追加のメソッド bark() もあることに注意してください。このメソッドは Animal インターフェイスのメソッドではないため、Animal# を使用してください。 # #このメソッドを呼び出すとコンパイル エラーが発生します。 不足しているメソッドを実装することで、メソッドが実装されていない例外を回避することができました。具象クラスを使用する場合、実装されたメソッドを通常どおり呼び出すことができます。

もう 1 つの一般的な解決策は、抽象クラスを作成していくつかのメソッドを実装することです。このメソッドは、一部のメソッドのみを実装する必要がある一方で、他のメソッドはサブクラスによって実装できる状況に適しています。以下はサンプルコードです:

public abstract class Shape {
    public abstract double calculateArea();
    
    public double calculatePerimeter() {
        return 0;
    }
}

public class Circle extends Shape {
    private double radius;
    
    public Circle(double radius) {
        this.radius = radius;
    }
    
    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
    
    @Override
    public double calculatePerimeter() {
        return 2 * Math.PI * radius;
    }
}

public class Rectangle extends Shape {
    private double width;
    private double height;
    
    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }
    
    @Override
    public double calculateArea() {
        return width * height;
    }
}

上の例では、抽象クラス

Shape

を定義します。これには、抽象メソッド calculateArea() と具象メソッドが含まれます。 calculatePerimeter()。次に、2 つの具象クラス CircleRectangle を作成しました。これらは、それぞれ Shape クラスを継承し、calculateArea() メソッドを実装しました。 Circle クラスは、calculatePerimeter() メソッドもオーバーライドします。 抽象クラスを作成すると、特定のメソッドの実装をサブクラスに引き渡して、実装されていない例外の問題を回避できます。

要約すると、Java メソッドの未実装例外を解決するには、主に 2 つの方法があります。欠落しているメソッドを実装するか、いくつかのメソッドを実装する抽象クラスを作成することです。どの方法を選択するかは特定のニーズによって異なり、実際の状況に基づいて最適なソリューションを選択できます。

この記事が、Java メソッドの実装されていない例外の問題を解決し、コードをより堅牢で保守しやすくするのに役立つことを願っています。

以上がJavaメソッドが実装されていない例外(MethodNotImplementedException)の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。