전공 과목 이수2👨‍💻/JAVA(공)

자바|10주차 인터페이스

천숭이 2021. 5. 18. 23:11

extends는 인터페이스가 인터페이스를 상속받을 때  사용

 

# 인터페이스 형태

[public은 선택적] interfaceName [extends ListOfSuperInterfaces] {  // 인터페이스 몸체

      constant definitions  상수 정의 (필드)

      method declarations 메소드 선언

 

* 인터페이스에서 선언된 모든 필드는 반드시 초기화가 되어야 한다.

 

* 인터페이스의 메소드는 내부적으로 추상 메소드가 된다. 꼭 구현을 해야한다.

 

* 인터페이스 = 추상클래스

 

* static이 올 수 없음

 

* 생성자가 없음

 

** 인터페이스가 선언되면 인터페이스를 구현하는 클래스가 있어야 한다. 인터페이스는 객체를 가질 수 없다.

 

# 클래스가 인터페이스를 상속받을때는 implements 사용

class className implements InterfaceName {
    // ....
   }

* 다중상속시 .연산자를 이용해 구체적으로 상속할 것 명시.

 

# 인터페이스의 모든 메소드들을 구현하지 않으면 그 클래스는 추상클래스가 된다

abstract class SetColor implements BaseColors {
	// fields
    public void setColor(int color) {
    	// ...
       }
    // BaseColor의 getColor메소드 구현안된 상황

# 인터페이스와 추상클래스의 차이

인터페이스는 다중상속을 지원한다. 메소드 선언만 간으하고 메소드를 구현할 순 없다.

추상클래스는 단일상속만 가능하다. 메소드의 부분적인 구현이 가능하다.