추상화는 클래스 속성을 중심으로 공통적 특성을 모아 클래스를 정의하는 작업을 의미합니다.
그리고 추상화로 생성되어 이상의 추상 메서드를 포함하는 클래스를 추상 클래스라고 합니다.추상 메서드와 추상 클래스의 기본적인 형태는 다음과 같습니다.
// 추상클래스
abstract class Animal { // abstract class 클래스명
}
// 추상 메서드
// - 메서드 {}가 없고 ;(세미 콜론)으로 마무리
abstract void feed(); // 추상 메서드는 내용을 가질 수 없습니다.
abstract class Animal {
abstract String feed();
}
class Cat extends Animal {
private String catFeed;
public Cat(String catFeed) {
this.catFeed = catFeed;
}
@Override
public String feed() {
return String.format("고양이가 %s를 먹습니다", catFeed);
}
}
class Dog extends Animal {
private String dogFeed;
public Dog(String dogFeed) {
this.dogFeed = dogFeed;
}
@Override
public String feed() {
return String.format("강아지가 %s를 먹습니다", dogFeed);
}
}
public class Velog {
public static void main(String[] args) {
// Animal impassible = new Animal();
Cat cat = new Cat("츄르");
System.out.println(cat.feed());
Dog dog = new Dog("개껌");
System.out.println(dog.feed());
}
}
<※ 결과는 다음과 같습니다.>
바로 추상 클래스는 직접적으로 객체를 생성할 수 없다는 것입니다.위 예제의 Animal impassible = new Animal(); 코드를 봐주시길 바랍니다.