선릉역 1번 출구
7. 추상 클래스 본문
메서드 선언: 반환 타입, 메서드 이름, 매개변수로 구성됨
메서드 정의: 메서드 구현과 동일한 의미로, 구현부(body, {})를 가짐
ex) int add(int x, int y) = 선언 | int add(int x, int y) {} = 정의, {}를 가지기 때문임
메서드에 구현 코드가 없다면 abstract로 선언하며, 추상 메서드를 가진 클래스를 abstract로 선언함
- 추상 메서드가 없어도 클래스에 abstract를 선언하여, 추상 클래스로 명명할 수 있음
- 이 경우, 해당 클래스는 상속만을 위해 만든 클래스임
추상 클래스를 사용하는 이유
해당 객체를 인스턴스화 하기 위함이 아닌, 상속을 하기 위함
abstract class Computer {
public abstract void display();
public abstract void typing();
public void turnOn(){
System.out.println("전원을 켭니다.");
}
public void turnOff(){
System.out.println("전원을 끕니다.");
}
}
class Desktop extends Computer {
@Override
public void display(){
System.out.println("Desktop Display");
}
@Override
public void typing(){
System.out.println("Desktop Typing");
}
public void turnOff(){
System.out.println("컴퓨터 전원을 끕니다.");
}
}
abstract class Laptop extends Computer {
@Override
public void display(){
System.out.println("Laptop Display");
}
}
class MyLaptop extends Laptop {
@Override
public void typing(){
System.out.println("내 노트북 사용중입니다.");
}
}
public class Test {
public static void main (String[] args) {
// Computer mylaptop = new MyLaptop();
// Computer desktop = new Desktop();
Computer laptop = new Laptop();
}
}
- abstract 클래스 생성 시도 시, 에러발생함
'Language > Java' 카테고리의 다른 글
9. 인터페이스 (1) | 2023.11.23 |
---|---|
8. 템플릿 메서드 패턴(template method pattern) (0) | 2023.11.23 |
6. 자바의 특징 (0) | 2023.11.23 |
5. 배열의 정규화 (0) | 2023.11.21 |
4. 얕은 복사 vs 깊은 복사 (2) | 2023.11.21 |
Comments