추상 클래스(abstract class)란?
클래스의 공통된 부분을 별도의 클래스로 만들고 상속해서 사용하는 것.
클래스가 가지는 모든 속성과 기능을 가지고 있다.
추상 메서드(선언만 되어있고 정의되지 않은 메서드)를 가지며, 자식 클래스에서 반드시 구현해야 한다.
추상 메서드(abstract method)란?
자식 클래스에서 반드시 오버라이딩 해야만 사용할 수 있는 메서드.
추상 메소드가 포함된 클래스를 상속 받는 자식 클래스가 반드시 메소드를 구현하도록 하기 위해 사용한다고 한다.
예를 들면, 생산성 향상을 위해 공통적인 부분은 미리 구현해 놓고 필요한 부분만 자식 클래스에서 구현하여 사용하는 것이다.
예제
Animal 클래스에서 공통 메소드인 eat()를 구현 후 자식 클래스인 Cat 클래스와 Dog 클래스에서 각각 play()를 구현해본다.
Aniaml Class
public abstract class Animal {
String name;
public Animal() {
}
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + "이(가) 밥을 먹습니다.");
}
public abstract void play();
}
Cat Class
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void play() {
System.out.println(super.name + "은(는) 사냥 놀이를 합니다.");
}
}
Dog Class
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void play() {
System.out.println(super.name + "은(는) 터그 놀이를 합니다.");
}
}
AnimalTest Class
추상 클래스는 객체 생성이 불가능 하지만, 자료형(타입)으로 사용되어 아래와 같이 객체를 생성 할 수 있다.기본적으로 Cat cat = new Cat(); 이나 Dog dog = new Dog(); 와 같이 자식 클래스를 대상으로 객체를 생성하면 된다.
public class AnimalTest {
public static void main(String[] args) {
Animal cat = new Cat("다비");
Animal dog = new Dog("솔이");
// 고양이 다비의 하루
System.out.println("=======고양이 다비의 하루=======");
System.out.println("우리집 고양이 이름은 " + cat.getName() + "입니다.");
cat.eat();
cat.play();
System.out.println("=============================");
// 강아지 솔이의 하루
System.out.println("=======강아지 솔이의 하루=======");
System.out.println("우리집 강아지 이름은 " + dog.getName() + "입니다.");
dog.eat();
dog.play();
System.out.println("=============================");
}
}
실행 결과

'개발 > Java' 카테고리의 다른 글
[Java] Lombok이란? @Data, @NoArgsConstructor, @AllArgsConstructor, @Builder 사용하기 (0) | 2023.01.27 |
---|---|
[Java] 람다식 (0) | 2022.09.05 |
[Java] String to Array, String to Char (0) | 2022.08.23 |
[Java] 배열과 메모리 (0) | 2022.08.22 |
[Java] 자료형 (0) | 2022.08.22 |