[Java] - 추상 클래스와 인터페이스

이창희·2022년 5월 28일
0

Java

목록 보기
10/13

1.추상 클래스


1. 1추상 클래스란?

  • 미완성 설계도. 미완성 메서드를 갖고 있는 클래스
abstract class Player{//추상 클래스(미완성 클래스)
		abstract void play(int pos); // 추상메서드 (몸통{}이 없는 미완성 메서드
		abstract void stop();
}
  • 다른 클래스 작성에 도움을 주기 위한 것이다.
  • 추상 클래스는 인스턴스 생성이 불가능하다.
  • 상속을 통해 추상 메서드를 완성해야 인스턴스가 생성이 가능하다. (하나라도 구현하지 않으면 사용 불가능)
    Class AudioPlayer extends Player{
    		void play(int pos){/* 내용 생략*/ } //추상메서드를 구현
    		void play(int pos){/* 내용 생략*/ } //추상메서드를 구현
    }

1.2 추상메서드

  • 미완성 메서드. 구현부가 없는 메서드이다.
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 작성한다.
  • 강제성을 띄기 때문에 꼭 필요한 메서드만 작성한다.

1.3 추상클래스의 작성

  • 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상 클래스를 만든다.
  • 기존 클래스의 공통 부분을 뽑아서 추상 클래스를 만들게 되면 추상클래스를 이용해서 더욱 객체 지향적인 사용이 가능해진다.(다형성)




2. 인터페이스


2.1 인터페이스란?

  • 추상메서드의 집합이다. 즉 인터페이스는 일종의 추상클래스이다.
  • 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.
  • 오직 추상메서드상수만을 멤버로가질 수 있다.
  • 밑그림만 그려져 있는 “기본 설계도” 라고 할 수 있다.
  • 다른 클래스를 작성하는데 도움을 줄 목적으로 작성한다.

2.2 인터페이스의 작성

  • 키워드로 class 대신 interface를 사용하는 것 빼곤 class와 다른게 없다.
  • 접근제어자로 public 또는 default를 사용할 수있다.
interface 인터페이스이름{
				public static final 타입 상수이름 =;
				public abstrct 메서드이름(매게변수목록);
}
  • 단 인터페이스의 멤버들은 제약사항이 있다.
- 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다.
- 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다., static메서드와 디폴트 메서드는 예외(JDK1.8부터)
- 모든 멤버들에게 적용되는 만큼 생략하여 작성하는 경우가 많다.
  • JDK1.8 이후에는 static메서드와 디폴트 메서드의 추가를 허용하는 방향으로 변경되었다.

2.3 인터페이스의 상속

  • 인터페이스는 인터페이스로부터 만 상속 받을 수 있다.
  • 여러 개의 인터페이스를 상속 받을 수 있다.( , 로 구분한다.)
    interface 인터페이스1 extends 인터페이스2, 인터페이스3

2.4 인터페이스의 구현

  • 인터페이스도 그 자체로는 인스턴스를 생성할 수 없다.
  • 구현한다는 의미의 키워드 implements 를 사용한다.
class 클래스이름 implements 인터페이스 이름{
				// 인터페이스에 정의된 추상메서드를 구현해야 한다.
}
  • 만일 구현하는 인터페이스의 메서드 중 일부만 구현한다면 abstract를 붙여서 추상클래스로 선언해야한다.
  • 상속과 구현을 동시에 할 수도 있다.

2.5 인터페이스의 장점

  • 개발시간을 단축시킬 수 있다.
  • 표준화가 가능하다.
  • 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
  • 독립적인 프로그래밍이 가능하다.

2.6 인터페이스의 이해

  • 왜 쓰는지를 알아야한다…
- 클래스를 사용하는 쪽과 클래스를 제공하는 쪽이있다.
- 메서드를 사용(호출)하는 쪽(User)에서는 사용하려는 메서드의 선언부만 알면된다.(내용은몰라도 된다. )
- 즉 하나의 잘 정리된 명세서가 있다는 것이다.
profile
백앤드 개발자를 꿈꾸는 개발자 지망생입니다.

0개의 댓글