Javaでのメソッドの書き換えとオーバーロードの違い

 

メソッドの書き換え
メソッドの書き換えは実行時に発生し、サブクラスは親クラスのメソッドの内部ロジックを再形成し、外部定義を変更することはできません。
機能
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()方法");
	}
}

おすすめ

転載: blog.csdn.net/weixin_51980491/article/details/112724938