1 추상클래스
추상클래스는 상속에서 슈퍼클래스로 사용된다.
추상메소드
추상메소드(abstract method)란 선언은 되어 있으나 코드가 구현되어 있지 않은 즉 껍데기만 있는 메소드이다. 추상 메소드를 작성하려면 absrtact 키워드와 함께 원형만 선언하고 코드는 작성하지 않는다.
추상클래스 만들기
˙ 추상 메소드를 포함하는 클래스
˙ 추상 메소드가 없지만 abstract로 선언한 클래스
추상메소드를 가지고 있으면 반드시 추상클래스로 선언해야 한다.
추상클래스의 상속
추상 클래스를 단순히 상속받는 서브 클래스는 추상 클래스가 된다. 추상 클래스의 추상메소드를 그대로 상속받기 때문이다. 그러므로 서브 클래스에 abstract를 붙여 추상 클래스임을 명시해야 컴파일 오류가 발생하지 않는다.
다음은 Shape을 상속받는 Line클래스에서 추상 메소드인 draw()를 오버라이딩 하지 않으면 자동으로 추상클래스가 되므로 Line은 abstract키워드를 사용하여 추상 클래스임을 명시해야한다.
2 인터페이스
인퍼테이스(interface)는 interface키워드를 사용하여 클래스를 선언하듯이 선언한다. 다음은 전화기의 규격을 묘사하는 PhoneInterface 인터페이스를 선언하는 예이다.
인터페이스 구성
˙ 상수와 추상 메소드
˙ default 메소드
˙ private 메소드
˙ static 메소드
추상 메소드는 public abstract 로 정해져 있으며 생략될 수도 있고 다른 접근 지정자로 지정 될 수 있다. default, private, static 메소드들은 몯 인터페이스 내에 코드가 작성되어 있어야한다.
default 메소드의 접근지정은 public으로 고정되어 있다. private 메소드는 인터페이스 내에서만 호출 가능하다. static 메소드의 경우 접근 지정이 생략되면 public이며 private로 지정될 수 있다.
인터페이스 특성
● 인터페이스는 객체를 생성할 수 없다.
● 인터페이스 타입의 레퍼런스 변수는 선언 가능하다.
● 인터페이스끼리 상속된다.
●인터페이스를 상속받아 클래스를 작성하면 인터페이스의 모든 추상 메소드를 구현해야한다.
인터페이스 구현
인터페이스 구현이란 implements 키워드를 사용해 인터페이스의 모든 추상 메소드를 구현한 클래스를 작성하는 것을 말한다. 다음은 PhoneInterface를 구현한 SamsungPhone 클래스를 작성한 사례이다.
인터페이스 다중 구현
클래스는 하나 이상의 인터페이스를 구현할 수 있다. 콤마로 각 인터페이스를 구분해 나열하며 각 인터페이스에 선언된 모든 추상 메소드를 구현해야 한다. 그렇지 않으면 컴파일 오류가 발생한다.
다음은 AIInterfaced와 MobilePhoneInterface를 모두 구현한 AIPhone클래스를 작성한 사례이다.
3 인터페이스와 추상클래스 비교
인터페이스와 추상클래스의 유사점
˙ 객체를 생성할 수 없고, 상속을 위한 슈퍼클래스로만 사용된다.
˙ 클래스의 다형성을 실현하기 위한 목적이다.
'JAVA' 카테고리의 다른 글
[JAVA] 메소드 오버라이딩 (0) | 2020.05.26 |
---|---|
[JAVA] 상속 (1) | 2020.05.26 |
[JAVA] 접근지정자와 static, final (0) | 2020.05.25 |
[JAVA] 생성자와 this (0) | 2020.05.23 |
[JAVA] 객체와 클래스 (0) | 2020.05.23 |