メソッドの書き換え
メソッドの書き換えは実行時に発生し、サブクラスは親クラスのメソッドの内部ロジックを再形成し、外部定義を変更することはできません。
機能
1:メソッドの書き換えはサブクラスで発生します
。2:書き換えメソッドによって渡されるパラメーターは親クラスのパラメーターと一致している必要があります
。3:戻り値の型、メソッド名は親クラスと一致している必要があります。例外のスコープは親クラスよりも小さく、アクセス修飾子は親クラスよりも大きな権限を持っています
。4:親クラスメソッドのアクセス修飾子が(private / final / static)の場合、サブクラスメソッドはオーバーライドできません。
5:親クラス構築メソッドをサブクラスでオーバーライドすることはできません。
public class Test{
public static void main(String[] args) {
DemoSon demoson=new DemoSon();
//调用DemoSon类中的dosth()方法
demoson.dosth(); //输出:DemoSon子类重写的Demo父类的dosth()方法
Demo1 demo1=new Demo1();
//直接调用父类Demo的dosth()方法
demo1.dosth();//输出:Demo父类的方法
}
}
class Demo{
public void dosth(){
System.out.println("Demo父类的方法");
}
}
class DemoSon extends Demo{
public void dosth(){//实现Demo类中dosth()方法的重写
System.out.println("DemoSon子类重写的Demo父类的dosth()方法");
}
}
class Demo1 extends Demo{
}
メソッドのオーバーロード
メソッドのオーバーロードはコンパイル中に発生します。同じクラスで、同じ名前の複数のメソッドが、異なる入力パラメーターに従って異なる論理処理を実行します。
機能
1:メソッドのオーバーロードは同じクラスである必要があります;
2:メソッドのパラメーターリストは一貫していない必要があります(一貫性のないtypes \ number \ inconsistent order);
3:メソッドの戻り値とアクセス修飾子は異なる可能性があります;
4:構築メソッドは過負荷
/*
* Dome类中实现了dosth()方法的三次重载
*/
public class Dome{
public void dosth(){
System.out.ptinln("没有参数的dosth()方法");
}
public void dosth(int n){
System.out.ptinln("一个int类型的参数的dosth()方法");
}
public void dosth(int n,String str){
System.out.ptinln("一个int类型的参数和一个String类型参数的dosth()方法");
}
}