Java : 추상 클래스, 인터페이스

커비·5일 전
0

Java

목록 보기
49/55

추상 클래스

public abstract class 추상클래스명 {

}
  • avstract 키워드를 사용하여 추상 클래스를 선언할 수 있음
  • 추상 클래스는 추상 메서드를 포함할 수 있음
    : 추상 메서드가 없어도 추상 클래스로 선언할 수 있음
  • 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있음 (= 미완성된 설계도)
  • 추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출해서 만들 수 있음

추상 클래스 상속

public class 클래스명 extends 추상클래스명 {
	@Override
    public 리턴타입 메서드이름(매개변수, ...) {
    	// 실행문
    }
}
  • 추상 메서드는 extends 키워드를 사용해 클래스에서 상속됨
  • 상속받은 클래스에서 추상 클래스의 추상 메서드는 반드시 오버라이딩 되어야 함

추상 클래스 사용방법




  • 벤츠, 아우디, 제네시스는 horn() 메서드의 내용에 차이가 존재함
  • 따라서 horn() 메서드를 추상 메서드로 선언하여 자식 클래스에서 재정의 될 수 있도록 함
  • 3개의 자동차가 무조건 오버라이딩해야함

인터페이스

인터페이스의 역할

  • 인터페이스는 두 객체를 연결해주는 다리 역할을 해줌
    : 사람과 삼성티비, 엘지티비 객체가 존재한다고 생각해봤을 때 사람 객체는 멀티 리모컨 인터페이스를 통해 삼성티비 객체의 채널을 변경할 수 있음
    : 이 때, 삼성티비가 아니라 엘지티비로 객체가 교체된다고 해도 채널을 변경할 수 있음
  • 상속관계가 없는 다른 클래스들이 서로 동일한 행위 즉, 메서드를 구현해야할 때 인터페이스는 구현 클래스들의 동일한 사용방법과 행위를 보장해줄 수 있음
    : 인터페이스는 스펙이 정의된 메서드들의 집합
    : 인터페이스의 구현 클래스들은 반드시 정의된 메서드들을 구현해야함
    : 따라서 구현 클래스들의 동일한 사용방법과 행위를 보장해줄 수 있음
    : 이러한 특징은 인터페이스에 다형성을 적용할 수 있게 만들어줌

인터페이스 선언

public interface 인터페이스명 {

}
  • 인터페이스는 클래스와 마찬가지로 public, defalut 접근 제어자를 지정할 수 있음

인터페이스 구성

  • 모든 멤버 변수는 public static final 이어야 함 (생략 가능)
  • 모든 메서드는 public abstract 이어야 함
    : static 메서드와 default 메서드 예외하고 생략 가능
  • 생략되는 제어자는 컴파일러가 자동으로 추가해줌

인터페이스 구현

  • 인터페이스는 추상 클래스와 마찬가지로 직접 인스턴스를 생성할 수 없기 때문에 클래스에 구현되어 생성됨

  • inplements 키워드를 사용하여 인터페이스를 구현할 수 있음

  • 인터페이스의 추상 메서드는 구현될 때 반드시 오버라이딩 되어야 함

  • 인터페이스의 추상 메서드를 일부만 구현해야 한다면 해당 클래스를 추상 클래스로 변경해주면 됨


인터페이스 상속

  • 인터페이스간의 상속은 implements 가 아니라 extends 키워드를 사용함

  • 인터페이스는 클래스와 다르게 다중 상속이 가능함

  • 인터페이스 C는 아무것도 선언되어있지 않지만 인터페이스 A,B를 다중 상속 받았기 때문에 추상 메서드 a,b를 갖고 있는 상태임

profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글