09.抽象クラス(abstractclass)


抽象クラスとは?


  • クラス(abstractmethod)を含む抽象メソッド(abstractmethod)は、メソッドの宣言のみであり、実装コードはありません.

  • メソッド宣言(declaration):タイプ、メソッド名、パラメータを返すように構成されています.

  • メソッド定義(definition):メソッド実装(implementation)と同じ意味の実装(body)({})

  • 例)int add(int x,int y);//宣言
      int add(int x,int y){}//実装部分があり、抽象的な方法ではありません

  • 抽象保存語の使用

  • 抽象クラスはnewではありません(インスタンス化できません)
  • 抽象クラスの実装


  • メソッドに実装コードがない場合はabstractと宣言します.

  • abstractメソッドとして宣言されたクラスはabstractとして宣言されます

  • すべてのメソッドがabstractと宣言されている場合、抽象クラスにインスタンス化できません.

  • 抽象クラスの抽象メソッドはサブクラスによって継承され、実装されます.

  • 抽象クラスにおける抽象メソッド:サブクラスが実装しなければならないメソッド

  • 抽象クラスでの実装方法:サブクラス共通の方法(必要に応じてサブクラスで再定義)

  • 実装例

  • Computer.java
    public abstract class  Computer {
    
    	abstract void display();
    	abstract void typing();
    	
    	public void turnOn() {
    		System.out.println("전원을 켭니다.");
    	}
    	
    	public void turnOff() {
    		System.out.println("전원을 끕니다.");
    	}
    }
    DeskTop.java
    public class DeskTop extends Computer{
    
    	@Override
    	void display() {
    		System.out.println("DeskTop display");
    	}
    
    	@Override
    	void typing() {
    		System.out.println("DeskTop typing");
    	}
    
    	@Override
    	public void turnOff() {
    		System.out.println("Desktop turnoff");
    	}
    }
    NoteBook.java
    public abstract class NoteBook extends Computer{
    	@Override
    	public void typing() {
    		System.out.println("NoteBook typing");		
    	}
    }
    MyNoteBook.java
    public class MyNoteBook extends NoteBook{
    
    	@Override
    	void display() {
    		System.out.println("MyNoteBook display");		
    	}
    }
    ComputerTest.java
    public class ComputerTest {
    
    	public static void main(String[] args) {
    		Computer computer = new DeskTop();
    		computer.display();
    		computer.turnOff();
    		
    		NoteBook myNote = new MyNoteBook();
    	}
    }