目次
1. 意味
2. メソッドのオーバーライドを使用する理由
3.メソッドオーバーライドの使用方法
3.1 基本構文
3.2 特殊な分析
ホームページ よくある問題 Java でのメソッドのオーバーライドを完全に習得する

Java でのメソッドのオーバーライドを完全に習得する

Jul 29, 2022 pm 03:22 PM
java

この記事では、java に関する関連知識を提供します。サブクラスが親クラスを継承した後、親クラスと同じ名前と同じパラメーターを使用してサブクラスにメソッドを作成できます。親クラスの機能を実現するクラス内で同じ名前とパラメータを持つメソッドを上書きすることをメソッド書き換えと呼びます一緒に見ていきましょう。皆さんの参考になれば幸いです。

Java でのメソッドのオーバーライドを完全に習得する

推奨学習: 「java ビデオ チュートリアル

1. 意味

サブクラスが親を継承した後class では、親クラスと同じ名前、同じパラメータを持つメソッドをサブクラスに記述することで、親クラスの同じ名前、同じパラメータを持つメソッドをオーバーライドできます。この処理をメソッドのオーバーライドと呼びます

2. メソッドのオーバーライドを使用する理由

2.1 親クラスのメソッドがサブクラスのニーズを満たせない場合、メソッドをサブクラスで書き直す必要があります

2.2 質問と分析

たとえば、親クラス Peple とサブクラス Chinese があり、親クラスには人々の会話を出力する Say() メソッドがありますが、サブクラスに呼び出させたい場合は、次のように出力されます。中国人が話しています。とても難しいです。メソッドを直接呼び出すことは明らかに不可能なので、サブクラス

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("人在说话");
    }

}
ログイン後にコピー
のsayメソッドを書き直す必要があります。

中国語クラス

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()方法
    }
}
ログイン後にコピー

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

3.メソッドオーバーライドの使用方法

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 サンプルコード実行時のスクリーンショット

3.2.2 親クラスのメソッドの戻り値の型が基本データ型の場合、メソッドの戻り値の型は次のようにオーバーライドされます。サブクラスも対応する基本データ型です。

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 の場合、サブクラスによってオーバーライドされるメソッドの戻り値の型もvoid

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 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 親クラスのメソッドが静的に変更される場合、サブクラスはメソッドをオーバーライドできません。

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 サンプルコード実行スクリーンショット

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

#強制実行後に表示されるエラー メッセージ

3.3 メソッド書き換えに関するヒント

3.3.1メソッドのコピー

手順

1. まず、サブクラス

2 によってオーバーライドする必要がある親クラスのメソッドを直接コピー (Ctrl C) します。貼り付け (Ctrl V) ) をサブクラス

3 に追加します。親クラスでは達成できない要件の実現を容易にするために、サブクラス内の関数を変更します。

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

#3.3 .2 コンパイラプロンプトメソッド

手順

1. まず、サブクラスに英語の @ 記号

# を記述します。 2. プロンプト「オーバーライド/実装メソッド in...

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

4プロンプトに従って、オーバーライドする必要がある対応するメソッドを選択します。

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

6 に生成されます。生成されたオーバーライドされたメソッドで自動的に生成された最初の行を削除し、必要に応じてメソッド本体に追加します。適切なステートメントを作成します。

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

##3.3.3 ショートカット キー メソッド

手順

1. オーバーライドされたメソッドが配置される場所にマウスを移動します。

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

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

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

5. [OK] ボタンをクリックします。必要な書き換えメソッドは後で生成されます

6. 自動生成された書き換えメソッドの最初の行を削除し、メソッド本体に適切なステートメントを記述します

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

# 推奨学習: 「

Java ビデオ チュートリアル

>>

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4