書き換え1. A法(オーバーライド)
プロセスは、親クラスのサブクラスのニーズを満たすことができない場合は、我々はまた、書き換えたり上書き複製するために呼ばれ、サブクラスで親クラスを書き換えることができます。
次の3点にメソッドのオーバーライド対象:
-
==:メソッド名、パラメータリストは同じでなければなりません。
-
<=:サブクラスオーバーライドメソッド修飾子修飾子許可権は、スーパークラスのメソッドをオーバーライドするに等しいより大きくなければなりません。
プライベート親クラスのメソッドをオーバーライドすることはできません、方法の静的な変更はオーバーライドすることはできません。
-
<=サブクラスの戻り型と例外は同じ型と値型は、親クラスの例外タイプを返す以下でなければなりません。
親クラスがオーバーライドメソッドの戻り値の型の基本データ型である場合は、文字列や空白を入力し、その後、請求サブクラスオーバーライド戻り型の方法をオーバーライドする方法は、一貫性と戻り型の親でなければなりません。
親クラスが型参照データ型(文字列型が含まれていない)の戻り値として書き換えられた場合、親クラスの方法クレームサブクラスオーバーライド戻り型が戻り値の型と一致する方法を書き換え、または必要とされなければなりませんメソッドのサブクラスのオーバーライド戻り値の型は、親クラスのサブクラスは、値クラスの書き換え方法を返されなければなりません。
ケースオーバーライド[例]方法
// 父类
class Parent {
public void show(){
System.out.println("父类中的 show方法执行");
}
}
// 子类
class Child extends Parent {
// 子类重写父类的show方法
public void show(){
System.out.println("子类中的 show方法执行");
}
}
public class ExtendsMethodDemo {
public static void main(String[] args) {
Child p = new Child();
p.show(); // 执行的是子类的show方法
}
}
注:サブクラスのメソッドが親クラスのメソッドをオーバーライドする場合、このメソッドは、サブクラスのオブジェクトによって呼び出され、メソッド呼び出しが書き込まコーティングされています!
サブクラスのメソッドが親クラスのメソッドを呼び出すためにsuperキーワードを使用して、親クラスのメソッドの機能を使用する必要がある場合は、キーワードが現在のオブジェクトの親オブジェクトを参照します。だから、親クラスの機能を踏襲し、ユニークな機能の種類を(superキーワードが使用され、これは非常に似ている)を定義していること。
[例]メソッドのオーバーライドアプリケーション
// 功能机
class Phone {
void showPhoneNum() {
System.out.println("显示来电手机号码");
}
}
// 智能机
class IntelligentPhone extends Phone {
// 覆盖父类方法,并添加新的功能
void showPhoneNum() {
// 使用super调用父类成员方法
super.showPhoneNum();
System.out.println("显示来电姓名");
System.out.println("显示来电头像");
}
}
public class OverrideDemo {
public static void main(String[] args) {
IntelligentPhone ip = new IntelligentPhone();
ip.showPhoneNum(); // 调用的是子类的方法
}
}
メソッドのオーバーライドとオーバーロードの違いは何ですか?
相違点 | メソッドのオーバーロード | メソッドのオーバーライド |
---|---|---|
英文名 | オーバーロード | オーバーライド |
スコープ | 同じクラスに起こります | これは、継承関係で発生しました |
メソッド名とパラメータリスト | 同じメソッドの名前、同じパラメータリスト | 同じメソッドの名前、同じパラメータリスト |
修飾子権 | アクセスのための要件はありません | 親クラスへのアクセス、またはそれ以上サブクラス |
戻り値と例外のタイプ | 戻り値と例外タイプのタイプが必要とされていません | 戻り値の型と例外のタイプ、親サブクラス少ないです |
PS:最新の無料のマニュアルと教育ビデオの場合は、QQグループ(627407545)を追加してください受けます。