추상클래스와 인터페이스

송성빈·2024년 1월 8일
post-thumbnail

추상클래스와 인터페이스의 공통점

  1. 객체를 생성할 수 없다.
  2. 추상 메서드를 포함한다.
    • 선언부만 작성하고 구현부는 작성하지 않은 메서드
public void methodName();
  1. 상속받는 클래스에서는 추상 메서드를 반드시 재정의(overriding)해야 한다.

추상클래스

package abstractEx;
abstract class Animal {
    public void cry();
    	System.out.println("동물 울음 소리");
}
package abstractEx;
class Dog extends Animal {
    @Override
    void cry() {
    	System.out.println("멍멍");
    }
}
package abstractEx;
class Cat extends Animal {
	@Override
    void cry() {
    	System.out.println("야옹");
    }
}
package abstractEx;
public class AbstractMain {
	public static void (String[] args) {
    	Dog dog = new Dog();
        Cat cat = new Cat();
        
        dog.cry();
        cat.cry();
    }
}
  1. 공통되는 부분을 추상클래스에 정의하고, 그 외의 부분을 자식클래스에서 확장하여 사용하기 위한 목적.
  2. 클래스다.
  3. 일반 메서드 정의가 가능하다.
  4. 클래스와 동일하게 변수 선언과 사용이 가능하다.
  5. 다중 상속이 불가능하다.

인터페이스

public interface Animal {
	void cry();
}

class Dog implements Animal {
	@Override
    public void cry() {
    	System.out.println("멍멍");
     }
}

class Cat implements Animal {
	@Override
    public void cry() {
    	System.out.println("야옹");
     }
}

class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat Cat = new Cat();
        
        dog.cry();
        cat.cry();
     }
}
  1. 구현 객체의 동일한 실행 기능을 보장하기 위한 목적.
  2. 클래스가 아니다.
  3. 일반 메서드 정의가 불가능하다.
  4. 상수만 사용 가능하다. (모든 멤버 변수는 public, static, final이 포함되어 있다.)
  5. 다중 구현이 가능하다.

0개의 댓글