[Ava]AbstractClass(抽象クラス)


抽象クラス


  • 抽象メソッド(Abstract Method):実装コードがなく、メソッドのみが宣言されていることを示します.
    ex) int add(int x, int y);

  • 上記の抽象メソッドを持つクラスを抽象クラスと呼び,抽象メソッドはサブクラス継承によって実現される.

  • 抽象メソッドを持つクラスは抽象クラスとして作成する必要があります.

  • 抽象クラスを継承するサブクラスは、親と同じ抽象クラスを作成するか、親の抽象メソッドを再定義する必要があります.
    (親クラスに2つの抽象メソッドがあり、子クラスでメソッドを再定義する場合は、子クラスを抽象クラスとして作成する必要があります.)
    つまり、すべての親の抽象メソッドを再定義しない場合は、子クラスを抽象クラスとして作成する必要があります.

  • 親クラスのすべての抽象メソッドが再定義されている場合でも、そのサブクラスを抽象クラスとして指定できます.

  • 抽象的な方法で、classは図の中で斜体で文章を表します.
    ex) Computer, display()

  • 抽象クラスはnewで新しいインスタンスを作成できません.

  • 抽象クラスは、継承のためにのみ作成されるクラスです.
  • 👨🏻‍💻 Example Code



    Computer.java
    package ch09;
    
    public abstract class Computer {
    	
    	public abstract void display();
    	public abstract void typing();
    	
    	public void turnOn() {
    		System.out.println("전원을 켭니다.");
    	}
    	
    	public void turnOff() {
    		System.out.println("전원을 끕니다..");		
    	}
    }
    Desktop.java
    package ch09;
    
    public class Desktop extends Computer {
    
    	@Override
    	public void display() {
    		// TODO Auto-generated method stub
    		System.out.println("Desktop display");
    	}
    
    	@Override
    	public void typing() {
    		// TODO Auto-generated method stub
    		System.out.println("Desktop typing");
    	}
    	
    }
    
    Computer.java
    package ch09;
    
    public class ComputerTest {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		//Computer desktop = new Computer();
    		// 추상 class는 new를 통해 새로운 instance를 만들 수 없다.
    		
    		Computer desktop = new Desktop();
    		desktop.display();
    		desktop.typing();
    		
    	}
    }
    

    テンプレートメソッドモード(抽象クラス適用)


  • テンプレートメソッドは、抽象メソッドまたは実装メソッドを使用してコードのスキーマを定義する方法です.

  • フレームワークでよく使用される設計モード.

  • 抽象クラスとして宣言された親クラスでは、テンプレートメソッドを使用して全体フローを定義し、サブクラスで実装するために、異なる実装の一部を抽象メソッドとして宣言する必要があります.

  • すなわち,抽象クラスで通用するメソッドのみが実現され,そうでなければ抽象メソッドとして作成される.また、使用する一般的な方法は、サブクラスで必要に応じて再定義することもできます.

  • 実装メソッドでは、変更できないメソッドがfinalを生成します.
  • Final予約語
    final変数:定数で、値は変更できません.
    final method:サブクラスで再定義できないメソッド
    final class:継承できないクラス

    Reference

  • 「Fast Campas」を一度に完了したJava/spring Web開発主ハイパーパケットオンライン.