Java/이론

[Java] 추상화 (abstract)

Puft 2024. 12. 13. 15:19

추상화는 공통의 속성이나 기능을 묶어서 이름을 붙이는 것입니다.

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를 사용해서 해당 인터페이스의

내용을 구현할 수 있습니다.

 

추상 메소드와 인터페이스를 사용하면

중복되는 부분의 템플릿을 만들어서

기본 틀을 잡을 수 있고

여러 클래스에서 해당 인터페이스를 참조할 수 있고

다양한 구현을 할 수 있게 됩니다.