[Java]メソッドオーバーライド(メソッドオーバーライド)


🤔 過剰運転?
関係を継承する親クラスで、定義したメソッドを、子クラスで同じフラグを持つメソッドとして再定義します.
Javaでは、子クラスは親クラスのprivateメンバーを除くすべてのメソッドを継承します.
継承方法は使用できますが、必要に応じて再定義できます.
メソッドオーバーライドは、親を継承するメソッドを再定義して使用することを意味します.
😉 上書き条件
  • 親クラスのメソッド名、戻りタイプ、パラメータ数、データ型、および順序を子クラスに統一して記述する必要があります.
  • の親メソッドに比べて、アクセス制御者をより小さな範囲に変更することはできません.
  • 親メソッドよりも広い範囲の例外は宣言できません.
  • 📃 メソッドオーバーライドの例
    負の通帳の例では、親Accountクラスの取り消し方法を子クラスMinusAccountクラスから上書きします.
    Account.java
    
    class Account {
    	//(...)
        
    	//출금하다.
    	public int withdraw(int amount) throws Exception {
    		if(balance < amount) {
    			throw new Exception("잔액 부족");
    		}
    		balance -= amount;
    		
    		return amount;
    		
    	}
    	
    }
    
    
    
    MinusAccount.java
    
    
    public class MinusAccount extends Account {
    	private int creditLine; //마이너스 한도
    	
    	public MinusAccount() {
    		
    	}
    
    	public MinusAccount(String accountNo, String ownerName, int balance, int creditLine) {
    		super(accountNo, ownerName, balance);
    		this.creditLine = creditLine;
    	}
    
    	//Account 에 있는 withdraw 메소드는 적합 하지 않아
    	//MinusAccount 클래스에서 재정의
    	//=> 메소드 오버라이딩 : 부모의 메소드의 시그니쳐 일치(리턴형, 메소드이름, 파라미터(갯수, 데이터형), 예외관련)
    	@Override
    	public int withdraw(int amount) throws Exception {
    		if(getBalance() + creditLine < amount) {
    			throw new Exception("잔액 부족");
    		}
    		
    		int balance = getBalance();
    		setBalance(balance - amount);
    		
    		return amount;
    	}
    	
    	
    }
    
    
    🗒 過負荷と過負荷の違い
    オーバーロード(リロード)は新しいメソッドを定義します.
    上書きは、継承を再定義する既存のメソッドです.
    参考資料
    http://www.tcpschool.com/java/java_inheritance_overriding
    https://blog.naver.com/PostView.naver?blogId=heartflow89&logNo=220961515893&redirect=Dlog&widgetTypeCall=true&directAccess=false
    Doit Javaを完全に征服