Super Coding Addict
Ch8. 추상 클래스 (1) 본문
< 추상 클래스란? >
* 추상 클래스
- 추상 메서드를 포함한 클래스
- 추상 메서드는 구현 코드가 없이 선언부만 있는 메서드
- abstract 예약어 사용
- 추상 클래스는 new(인스턴스화) 할 수 없다
* 추상 클래스 구현
- 메서드와 클래스에 abstract 키워드를 사용
- 추상 클래스 상속 후 구현시 모든 추상메서드를 구현하지 않으면 여전히 추상클래스
- 모든 메서드를 구현하여도 클래스에 abstract 키워드를 사용하면 추상 클래스 (공통메서드를 가지는 기반이 되는 클래스라고 한다면 인스턴스화할 수 없지만 추상 클래스로 쓸 수 있음)
* 추상 클래스 사용하기
- 추상 클래스는 주로 상속의 상위클래스로 사용됨
- 추상 메서드는 하위 클래스가 구현해야 하는 메서드
- 구현된 메서드는 하위 클래스가 공통으로 사용하는 기능의 메서드로 하위 클래스에 따라 재정의 가능
- 예제 : Computer 추상클래스
# Computer 클래스
package ch8.abstractEx;
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() 두 개의 일반메서드를 가진 추상클래스
--> 이 추상클래스를 상속한 클래스들은 추상메서드를 구현하거나 일반메서드를 재정의할 수 있음
# DeskTop 클래스 -- Computer클래스 상속
package ch8.abstractEx;
public class DeskTop extends Computer {
@Override
public void display() {
System.out.println("DeskTop display");
}
@Override
public void typing() {
System.out.println("DeskTop typing");
}
@Override
public void turnOff() {
System.out.println("desktop turnOff");
}
}
--> Computer 추상클래스를 상속하여 추상메서드였던 display(), typing()메서드를 구현 & 일반메서드인 turnOff()메서드를 재정의
# NoteBook 클래스 -- Computer클래스 상속
package ch8.abstractEx;
public abstract class NoteBook extends Computer {
@Override
public void typing() {
System.out.println("NoteBook typing");
}
}
--> typing()과 display() 두 개의 메서드를 모두 구현해야하나 typing()메서드만 구현하였으므로 display()메서드는 여전히 추상메서드이기에 NoteBook클래스는 추상클래스이다
# MyNoteBook클래스 -- NoteBook클래스 상속
package ch8.abstractEx;
public class MyNoteBook extends NoteBook {
@Override
public void display() {
System.out.println("MyNoteBook display");
}
}
--> NoteBook클래스를 상속
--> NoteBook클래스에서 구현하지 않아 추상메서드로 남아있었던 display()메서드를 구현
# ComputerTest 클래스 (메인)
package ch8.abstractEx;
public class ComputerTest {
public static void main(String[] args) {
Computer computer = new DeskTop();
computer.display();
computer.turnOff();
NoteBook myNote = new MyNoteBook();
}
}
'JAVA 문법' 카테고리의 다른 글
Ch08. 추상 클래스(2) - 추상 클래스 응용 [템플릿 메서드] (0) | 2021.03.06 |
---|---|
Ch11. 컬렉션 프레임 워크 - 제네릭 프로그래밍 (0) | 2021.03.04 |
Ch10. 자바 기본 클래스 (6) - String, Wrapper 클래스 (0) | 2021.03.03 |
Ch10. 자바 기본 클래스 (5) - 코딩해보기 (0) | 2021.03.02 |
Ch10. 자바 기본 클래스 (4) - Class 클래스 (0) | 2021.03.01 |