ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 추상 클래스
    Java 2023. 9. 4. 10:10

    추상 클래스

    • 구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함한 클래스
    • abstract 키워드를 포함하면 추상클래스가 된다.
    • 하나이상에 추상 메서드를 포함하면 반드시 추상클래스가 되어야 한다.
    • 메서드 선언 : 반환타입, 메서드 이름, 매개변수로 구성
    • 메서드 정의 : 메서드 구현과 동일한 의미 구현부를 가짐
    public abstract class Animal {
    	public void move() {
    		System.out.println("동물이 움직입니다.");
    	}
    	
    	// 추상 메서드
    	public abstract void hunt();
    }

    추상 메서드 상속

    • 자식 클래스도 추상 클래스로 만들어 준다
    • 추상 메서드를 일반(구현) 메서드로 재정의
    public class Human extends Animal {
    	@Override
    	public void hunt() {
    		System.out.println("돌 도끼로 사냥을 합니다.");
    	}
    }
    public class Person extends Human {
    	@Override
    	public void hunt() {
    		System.out.println("총으로 사냥을 합니다.");
    	}
    }

    클래스 설계

    • 부모클래스에서 추상 메서드를 활용하여 설계
    • 정의할 수 있는 메서드는 일반 메서드로 선언

    부모 클래스

    public abstract class Computer {
    
    	public abstract void display();
    	public abstract void typing();
    	public void turnOn() {
    		System.out.println("전원을 넣다");
    	}
    	public void turnOff() {
    		System.out.println("전원을 끄다");
    	}
    }
    • display와 typing은 추상메서드로 선언하여 자식클래스에서 재정의하여 사용
    • turnOn, turnOff는 일반메서드로 선언

    자식 클래스

    public class DeskTop extends Computer {
    	
    	// 구현 메서드 오버라이드 
    	@Override
    	public void display() {
    		System.out.println("모니터에 화면을 출력 합니다.");
    	}
    
    	@Override
    	public void typing() {
    		System.out.println("키보드로 글자를 입력 합니다.");
    	}
    	
    }
    public abstract class NoteBook extends Computer {
    	
    	@Override
    	public void typing() {
    		System.out.println("노트북 자판으로 글자를 입력 합니다.");
    	}
    }
    • Computer를 부모클래스로 하는 자식클래스 생성 
    • 사용할 추상메서드는 재정의 해주어야 한다.
    public class MyNoteBook extends NoteBook {
      
    	// 구현 메서드로 오버라이드 
    	@Override
    	public void display() {
    		System.out.println("블루투스 키보드로 글자를 입력 합니다.");
    	}
    	
    }
    • 자식클래스를 부모클래스로 하는 자식클래스도 생성할 수 있다.

    'Java' 카테고리의 다른 글

    [Java] 인터페이스(interface)  (0) 2023.09.04
    [Java] 템플릿 메서드  (0) 2023.09.04
    [Java] 다형성  (0) 2023.08.30
    [Java] 상속  (0) 2023.08.22
    [Java] Class 만들기  (0) 2023.08.21
Designed by Tistory.