버글버글

Java 수업 기록 (14) 상속-Interface 본문

java/java 수업 기록

Java 수업 기록 (14) 상속-Interface

Bugle 2022. 8. 5. 00:00
반응형

Interface 

(인터페이스의 뿌리는 추상 클래스이다.)

- 그래서 abstract 보단 interface가 더 많이 사용된다.

1. 클래스가 구현해야 할 메소드를 선언해 둔 자바 파일

2. 작업지시서 역할을 수행

3. 인터페이스 구현은 implements 키워드를 이용

4. 인터페이스를 구현하는 클래스는 반드시 인터페이스의 모든 추상메소드를 오버라이드 해야 함

5. 인터페이스를 작성하는 추상메소드는 abstract 키워드를 생략 할 수 있음

  (인터페이스 내부에서는 abstract로 인식함. 심지어 public도 생략이 가능함)

* 인터페이스는 추상 메소드를 담을 수 있는 ..?

6. 인터페이스 구현은 아래와 같이 한다.

형식 및 구성 (JDK 1.8버전 이상부터 아래와 같이 사용 된다)
public interface 인터페이스명 {
    상수
    추상메소드
    default 메소드
    private 메소드
    static 메소드
}

예시)

public interface A {
	public void a();				// public abstract void a();
      public void b();				// public abstract void b();
      public default void c() {};		// public void c() {};
}
 
public class B implement A {
	@Override
    public void a() {};
    @Override
    public void b() {};
}

A obj = new B();
obj.a();
obj.b();
obj.c();

클래스는 상속받는거고

인터페이스는 구현하는거다.


* 부모가(Super Class) 2개 일때 예시

public class phone {

}
public interface Computer {

}
public class SmartPhone extends Phone implements Computer {

}

// 클래스만 두개 상속 받는것은 안됨
// 그래서 1개는 interface로 처리 해 준다.

예시2) 

public abstract class Phone {
	
	public abstract void call();
	public abstract void sms();
		
}
public interface Computer {
	
	public void game();
	public void internet();\
    
}
// 상속(extends) 먼저, 구현(implements) 나중

public class SmartPhone extends Phone implements Computer {
	
	@Override
	public void call() {
		System.out.println("전화기능");
	}
	
	@Override
	public void sms() {
		System.out.println("문자기능");
	}
	
	@Override
	public void game() {
		System.out.println("게임기능");
	}
	
	@Override
	public void internet() {
		System.out.println("인터넷기능");
	}
public class Main {

	public static void main(String[] args) {

		Phone p1 = new SmartPhone();
		p1.call();
		p1.sms();
		((Computer) p1).game();
		((Computer) p1).internet();


		System.out.println();
		Computer p2 = new SmartPhone();
		((Phone) p2).call();
		((Phone) p2).sms();
		p2.game();
		p2.internet();
		
		System.out.println();
		SmartPhone p3 = new SmartPhone();
		p3.call();
		p3.sms();
		p3.game();
		p3.internet();
		
	}

}

* 인터페이스 같은 경우는 갯수 제한 없이 구현 할 수 있다. (부모 클래스는 1개)

Cloneable 이라는 interface가 있다. 인터페이스가 있는데 본문이 비어져 있다.

 

 

* 기타사항

클래스에서 인터페이스 구현하기

 

1. 클래스 생성시 인터페이스 추가하기

최초 1회는 인터페이스 검색을 해줘야 한다.

이렇게 생성 할 시에, Override가 다 되어서 나온다.

반응형