3. JAVA - 추상클래스/인터페이스

hsso_o·2024년 7월 10일
0

스터디

목록 보기
13/44
- 추상 메소드 : 메소드의 기능(구현내용)이 없고, 메소드의 헤더부만 존재하는 불완전한 메소드

추상 클래스(Abstract Class)

  • 추상 메소드를 0개 이상 포함하는 클래스
    • 하나라도 포함할 경우 반드시 추상 클래스
  • 스스로 자신의 생성자를 활용한 인스턴스 생성 불가능 → 불완전한 클래스
    • 상속을 활용해 하위클래스 타입의 인스턴스를 이용해 생성
  • 사용 이유
    • 다형성 적용을 위한 부모타입 역할
      • 필수 기능을 정의해 일관된 인터페이스(동일 기능)를 제공
    • 오버라이딩에 대한 강제성 부여
      • 추상 메소드를 반드시 오버라이딩 해야 하므로
abstract class Animal {
    String name;
    
    Animal(String name) {
        this.name = name;
    }
    
    abstract void makeSound(); // 추상 메소드
    
    void sleep() {
        System.out.println(name + " is sleeping.");
    }
}

인터페이스(Interface)

  • 추상 메소드와 상수 필드만 가질 수 있는 클래스의 변형체
    • (JDK 1.8 이후부터 추가) static 메소드 및 default 추가 시에는 바디 부분 구현 가능하기도 함
  • 상속과 달리 implements 키워드 사용
    • 여러개 implements 가능
  • 사용 이유
    • 공유 목적의 상수를 기반으로 모든 기능을 공통화해서 강제성을 부여하기 위해
      • 공통된 인터페이스
    • 자바의 단일 상속 보완
interface TestInter {
		
		// 모든 필드는 public static final만 가능하다.
		public static final PI1 = 3.1415;

		// public static final을 생략해도 자동으로 작성된다.(생략 가능)
        PI2 = 3.14;

        // 기본적으로 메소드는 public abstract여야 한다.
		public abstract void method1();

       // public abstract를 생략해도 자동으로 작성된다.(생략 가능)
       void method2();
}

추상 클래스와 인터페이스

공통점

구분추상 클래스인터페이스
자체 인스턴스 생성생성 불가생성 불가
다형성 적용 시 상위 타입 활용 가능 유무가능가능

차이점

구분추상 클래스인터페이스
상속 가능 범위단일 상속다중 상속
키워드extends 사용implements 사용
추상 메소드 갯수abstract 메소드 0개 이상모든 메소드는 abstract
abstract 키워드 명시명시적 사용묵시적으로 abstract
생성자가질 수 있음가질 수 없음
  • 추상 클래스: 공통된 상태와 행동을 여러 클래스에서 공유해야 할 때 사용
  • 인터페이스: 클래스 간에 공통된 행동을 정의하고, 여러 클래스가 이 행동을 구현하도록 강제할 때 사용
profile
아뇨 소혠데요-

0개의 댓글