선릉역 1번 출구

7. 추상 클래스 본문

Language/Java

7. 추상 클래스

choideu 2023. 11. 23. 14:07

메서드 선언: 반환 타입, 메서드 이름, 매개변수로 구성됨

메서드 정의: 메서드 구현과 동일한 의미로, 구현부(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