[Java] 추상화 (abstract)
추상화는 공통의 속성이나 기능을 묶어서 이름을 붙이는 것입니다.
abstract메소드는 미완성 메소드인데
하위클래스에서 반드시 오버라이딩 해야합니다.
abstract메소드가 하나 이상 있으면
해당 클래스는 추상클래스나 interface로 활용되어야 합니다.
추상 클래스는 사용할 클래스들의 공통적인 속성,기능들을 추출해
어느정도 규격을 잡아놓은 추상적인 클래스입니다.
public abstract void roar();
상위 클래스에서 추상메소들 구현해놓으면
public class Bird extends Animal {
private int leg;
public Bird(String sort, int age, int leg) {
super(sort, age);
this.leg = leg;
}
@Override
public void roar() {
// TODO Auto-generated method stub
System.out.println("짹짹");
}}
상속받는 클래스에서는 위와 같이
오버라이딩을 해서 해당 추상메소드를 구현해야합니다.
Interface는 추상메소드나 멤버 상수들을 담아낼 수 있습니다.
즉, 멤버 변수가 아닌 final을 사용한 상수만 가능합니다.
또한 메소드는 생성이 불가능 하지만
static 메소드는 생성이 가능합니다.
객체 생성도 클래스가 아니기 때문에 불가능합니다.
Interface는 다른 클래스에서 implements문구를 사용해서
구현할 수 있습니다.
public class Ironman extends Avengers implements Smoker,Driver
이런 식으로 클래스 명 뒤에 implements문구를 사용하고
@Override
public void smoke() {
System.out.println("뻐끔뻐끔");
}
Override를 사용해서 해당 인터페이스의
내용을 구현할 수 있습니다.
추상 메소드와 인터페이스를 사용하면
중복되는 부분의 템플릿을 만들어서
기본 틀을 잡을 수 있고
여러 클래스에서 해당 인터페이스를 참조할 수 있고
다양한 구현을 할 수 있게 됩니다.