Java でメソッドのオーバーライドをマスターする方法

PHPz
リリース: 2023-05-25 13:07:16
転載
967 人が閲覧しました

Java でメソッドのオーバーライドをマスターする方法

1. 意味

サブクラスが親クラスを継承した後、親クラスと同じ名前と同じパラメータを持つメソッドをサブクラスに作成できます。親クラスの制御を実現するために、同じ名前と同じパラメータを持つメソッドを上書きすることをメソッド オーバーライド

2と呼びます。親クラスのメソッドは子のニーズを満たすことができない クラスのニーズを満たす場合、サブクラスでメソッドを書き直す必要があります

2.2 質問と分析

たとえば、次のようになります。親クラス Peple、サブクラス Chinese で、親クラス () メソッドに発言権があり、人々の会話を出力しますが、サブクラスを呼び出すと、中国人の会話が出力されます。明らかにメソッドを直接呼び出すことは機能しません。サブクラス

2.3 サンプルコード

Peopleクラス

public class Peple {
    private String name;
    private String sex;
    private int age;
    private int weight;

    public Peple() {
    }

    public Peple(String name, String sex, int age, int weight) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.weight=weight;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    public void say(){
        System.out.println("人在说话");
    }

}
ログイン後にコピー

中国語クラス

public class Chinese extends Peple{
    public Chinese() {
    }
    @Override
    public void say() {
        System.out.println("中国人在说话");
    }
}
ログイン後にコピー

Test03クラス

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.say();
        //当进行方法重写时,调用的是子类的say()方法
    }
}
ログイン後にコピー
#のsayメソッドを書き直す必要があります。 ##2.4 スクリーンショットを実行するサンプルコード

3. メソッド書き換えの使用方法Java でメソッドのオーバーライドをマスターする方法

3.1 基本構文

@Override
权限修饰符 返回值类型 方法名(形参列表){
    //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private
    //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void
  
}
ログイン後にコピー
3.2 具体的な分析

3.2.1 サブクラスによってオーバーライドされるメソッドのアクセス権は、親クラスのメソッドのアクセス権以上である必要があります

a サンプル コード

People クラス

public class Peple {
    private String name;
    private String sex;
    private int age;
    private int weight;

    public Peple() {
    }

    public Peple(String name, String sex, int age, int weight) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.weight=weight;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    //没有写访问权限的话,默认是default访问权限
    void say(){
        System.out.println("人在说话");
    }

}
ログイン後にコピー

中国語クラス

public class Chinese extends Peple{
    public Chinese(){
    }
    //父类say方法的访问权限为default,子类say方法的访问权限为public,
    // 符合子类方法访问权限大于等于父类方法访问权限的要求
    @Override
    public void say() {
        System.out.println("中国人在说话");
    }
}
ログイン後にコピー

Test03 クラス

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.say();
    }
}
ログイン後にコピー

b サンプル コードの実行スクリーンショット

親クラスのメソッドの戻り値の型が基本データ型の場合、サブクラスによってオーバーライドされるメソッドの戻り値の型も、対応する基本データ型である必要がありますJava でメソッドのオーバーライドをマスターする方法

a サンプル コード

People クラス

public class Peple {
    private String name;
    private String sex;
    private int age;
    private int weight;

    public Peple() {
    }

    public Peple(String name, String sex, int age, int weight) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.weight=weight;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    public double add(int a,int b){
       return a+b;
    }

}
ログイン後にコピー

中国語クラス

public class Chinese extends Peple{
    public Chinese(){
    }
    @Override
    public double add(int a,int b) {
       return a+b+1;
    }
}
ログイン後にコピー

Test03 クラス

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        System.out.println("求和之和再加上1的结果为: "+c.add(2, 3));
    }
}
ログイン後にコピー

b サンプル コードの実行スクリーンショット

3.2.3 親クラスのメソッドの戻り値の型が void の場合、サブクラスはオーバーライドします。 メソッドの戻り値の型も voidJava でメソッドのオーバーライドをマスターする方法

a サンプルコード

People class

public class Peple {
    private String name;
    private String sex;
    private int age;
    private int weight;

    public Peple() {
    }

    public Peple(String name, String sex, int age, int weight) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.weight=weight;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    public void eat(){
        System.out.println("人的主食一般是熟食");
    }

}
ログイン後にコピー

中国語クラス

public class Chinese extends Peple{
    public Chinese(){
    }
    @Override
    public void eat() {
        System.out.println("中国人的主食是大米或者小麦");
    }
}
ログイン後にコピー
ログイン後にコピー

Test03クラス

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.eat();
    }
}
ログイン後にコピー
ログイン後にコピー

b 実行中のサンプルコードのスクリーンショット

3.2.4親クラスは静的に変更されており、サブクラスはメソッドをオーバーライドできませんJava でメソッドのオーバーライドをマスターする方法

a エラー サンプル コード

People クラス

public class Peple {
    private String name;
    private String sex;
    private int age;
    private int weight;

    public Peple() {
    }

    public Peple(String name, String sex, int age, int weight) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.weight=weight;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    public static void eat(){
        System.out.println("人的主食一般是熟食");
    }

}
ログイン後にコピー

中国語クラス

public class Chinese extends Peple{
    public Chinese(){
    }
    @Override
    public void eat() {
        System.out.println("中国人的主食是大米或者小麦");
    }
}
ログイン後にコピー
ログイン後にコピー

Test03 クラス

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.eat();
    }
}
ログイン後にコピー
ログイン後にコピー
b サンプルコード実行時のスクリーンショット

コンパイル時のアイデア 表示されるエラーメッセージ

強制操作後に表示されるエラーメッセージJava でメソッドのオーバーライドをマスターする方法

Java でメソッドのオーバーライドをマスターする方法3.3 メソッドの書き換えに関するヒント

3.3.1 メソッドのコピー

手順

1. まずは直接サブクラス Method

2 によってオーバーライドする必要がある親クラス内のクラスをコピー (Ctrl C) します。サブクラス

3 に貼り付け (Ctrl V) します。サブクラス内の関数を変更します。親クラスでは実現できない要件の実現を容易にするため

#操作スクリーンショットの表示

Java でメソッドのオーバーライドをマスターする方法

##3.3.2 コンパイラプロンプトメソッド

Java でメソッドのオーバーライドをマスターする方法手順

1. 最初のサブクラスクラス本体のメソッド以外の位置に、英語の @ 記号を書きます

2. メソッドのオーバーライド/実装を選択します。プロンプト...

3. ダブルクリックすると、オーバーライド メソッドの選択リストが表示されます。ウィンドウ

4. プロンプトに従って、書き換える必要がある対応するメソッドを選択します

5. [OK] ボタンをクリックすると、選択したメソッドのオーバーライド メソッドがサブクラスに生成されます

6. 生成された rewrite メソッドの自動生成された最初の行を削除し、適切なステートメントを記述します要件に従ってメソッド本体内で

#操作スクリーンショットの表示

Java でメソッドのオーバーライドをマスターする方法

Java でメソッドのオーバーライドをマスターする方法

3.3.3 ショートカットキーの方法

Java でメソッドのオーバーライドをマスターする方法手順

1. オーバーライドメソッドを生成する位置にマウスを移動します

2. Alt キーと Insert キーを押します同時にキーボードで

3 を押します。ポップアップ ボックスで、[メソッドのオーバーライド] を選択します。

4. ダブルクリックした後、インターフェイスがポップアップ表示されますので、必要なメソッドを選択します。インターフェイスのサブクラスによってオーバーライドされます

5. [OK] ボタンをクリックすると、必要なオーバーライド メソッドが生成されます

6. オーバーライド メソッドの自動を削除します 最初の行が生成され、次にメソッド本体に適切なステートメントを記述します。

操作スクリーンショットの表示

Java でメソッドのオーバーライドをマスターする方法

Java でメソッドのオーバーライドをマスターする方法

Java でメソッドのオーバーライドをマスターする方法

以上がJava でメソッドのオーバーライドをマスターする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート