JAVA

추상 클래스(abstract class)

jiyoon12 2025. 4. 26. 14:52
  • 하나 이상의 추상 메서드를 포함하고 있는 클래스이다.
  • 추상 메서드는 구현부가 없는(메서드 몸체가 없는) 메서드이다.
  • 직접적으로 객체를 생성할 수 업고 다른 클래스에서 상속받아 구현되어야 한다.
package com._abstract;

/**
 * 추상 클래스란?
 * 하나 이상의 추상 메서드를 포함하는 클래스 이거나
 * class 키워드 앞에 abstract 가지고 있으면 추상 클래스 입니다.
 */
// 강제적으로 타입으로만 설계하는 기법을 말한다.
// abstract - 강제성
public abstract class Animal {

    String name;

    public void move() {
        System.out.println("이동합니다.");
    }

    // 추상 메서드를 만들어 보자.
    // 클래스 내에서 단 하나라도 추상 메서드를 가지고 있다면
    // 그 클래스는 반드시 추상 클래스가 되어야 한다.
    public abstract void hunt();
}
package com._abstract;

/**
 * 추상 클래스를 활용하는 이유
 * 단 하나라도 추상 메서드가 있으면 추상 클래스가 되어야 한다.
 */
public class Tiger extends Animal {

    @Override
    public void hunt() {
        System.out.println("호랑이가 앞발로 사냥을 합니다.");
    }

    @Override
    public void move() {
        System.out.println("살금 살금 조용히 이동합니다.");
    }

}
package com._abstract;

public abstract class Human extends Animal {

    @Override
    public void move() {
        System.out.println("사람이 두 발로 걷습니다.");
    }
}
package com._abstract;

public class Person extends Human{

    // 구현 메서드로 만들어 주면 된다.
    @Override
    public void hunt() {
        System.out.println("총으로 동물들을 사냥합니다.");
    }
}
package com._abstract;

public class MainTest1 {

    public static void main(String[] args) {
        // 객체지향 개념으로 Animal 이라는 클래스를 인스턴스화 시키면 이상하다!
        Animal animal; // 타입으로 선언이 가능
        // animal = new Animal(); <-- 오류 발생
        // Animal 클래스는 abstract 키워드를 붙여서 추상 클래스로 설계 했다.
        // 그러면 추상 클래스 new 란 키워드 생성자를 활용해서
        // 독립적으로 메모리에 올릴 수 없다.

        // Human human = new Human();
        // 개발자가 객체를 생성 시킬 때 다른 사용자가 마음대로
        // 객체를 생성시키지 못하게 하는 강제성을 지닐 수 있다.

    }// end of main
} // end og class

 

'JAVA' 카테고리의 다른 글

인터페이스(interface)  (1) 2025.04.26
추상 클래스 구현해보기  (0) 2025.04.26
스타크래프트 만들어보기 ver.3  (0) 2025.04.25
다형성의 활용  (0) 2025.04.25
업캐스팅과 다운 캐스팅  (0) 2025.04.25