추상화?
추상화(Abstract)는 구현을 할 수 없는 상태에서 자식 클래스(sub class)에서 구현을 하겠다 선언하고, 부모 클래스(super class)에서는 추상적으로 선언만 하고 안의 내용은 생략하는 것을 말한다.
추상 클래스와 추상 메소드를 선언할 수 있고 abstract를 사용한다.
Java
public abstract class Food { // 추상 클래스를 선언함
abstract void imformation(); // 추상 메소드를 선언
public void init(){
System.out.println("음식에 대한 정보입니다.");
}
위처럼 abstract를 사용하여 추상화를 할 수 있다.
Java
public class Beverage extends Food {
public String name;
public int liter;
public Beverage(String name, int liter){
this.name = name;
this.liter = liter;
}
@Override
public void imformation(){ // 추상화한 메서드 imformation
System.out.println(this.name + "는 용량이 " + this.liter + "ml입니다.");
}
}
Java
public class Snack extends Food {
public String name;
public int gram;
public Snack(String name, int gram){
this.name = name;
this.gram = gram;
}
@Override
public void imformation(){
System.out.println(this.name + "는 무게가 " + this.gram + "gram입니다.");
}
}
위처럼 추상화를 이용하여 사용할 클래스의 틀을 잡고 각각의 자식 클래스에서 다른 기능의 메서드를 구현할 수 있다.
Java
public static void main(String[] args) {
Beverage coke = new Beverage("coke", 500);
Snack chip = new Snack("chip", 300);
cook.init();
coke.imformation();
Snack.imformation();
}
=> 음식에 대한 정보입니다.
coke는 용량이 500ml입니다.
chip는 무게가 300gram입니다.