[백기선] 8주자 과제: 인터페이스

[백기선] 8주자 과제: 인터페이스

728x90

1. 인터페이스 정의하는 방법

interface 키워드를 이용하여 선언

반드시 상수와 추상 메소드만 사용 가능

package test.exam public interface Speak { String lang = korea; void setLang(String typeLang); }

인터페이스는 개발 시간을 단축할 수 있음

확장도 용이하며 클래스 간의 변경에 영향을 미치지 않음

2. 인터페이스 구현하는 방법

package test.exam public class People implements Speak { private String lang; @Override public void setLang(String lang){ this.lang = lang; } public String getLang() { return lang; } }

인터페이스에서 선언한 추상메소드는 오버라이딩해서 사용해야 함

3. 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

package test.exam public class PeopleApp { pbulic static void main(String[] args) { // 인터페이스를 레퍼런스로 사용하면 get은 사용할 수 없음, 인터페이스에서 선언한 set만 사용 가능 Speak speak = new People(); speak.setLang('korea'); // 인스턴스로 사용하면 get과 set을 사용할 수 있음 People people = new People(); people.setLang('korea'); String lang = people.getLang(); // 캐스팅을 하면 get메소드에 접근 가능 String lang = ((People) speak).getLang(); } }

4. 인터페이스 상속

package test.exam public interface Ball { void basketball(String team); void baseball(String team); }

package test.exam public class Suwon implements People, Ball { private String lang; @Override public void basketball(String team){ System.out.println("수원 " + team); } @Override public void setLang(String lang){ this.lang = lang; } public String getLang(){ return lang; } }

다중상속이 가능함

5. 인터페이스의 기본 메소드, 자바8

자바 8부터 default Method를 지원

package test.exam public interface Ball { void basketball(String team); void baseball(String team); default void player(){ System.out.println('수원의 스포츠 구단입니다.') } }

하위 호환성을 지원하기 위해 등장

이미 선언되었기때문에 재정의를 하거나 정의된 그대로 사용해도 됨

6. 인터페이스의 static 메소드, 자바 8

default와 다르게 구현제에서 재정의 불가능

package test.exam public interface Ball { void basketball(String team); void baseball(String team); default void player(){ System.out.println('수원의 스포츠 구단입니다.') } static void basketName(){ System.out.println('농구단의 이름은 수원 kt입니다.') } }

package test.exam public SuwonApp { public static void main(String[] args){ Suwon suwon = new Suwon(); // 이렇게 접근해야 오류가 발생하지 않음 Ball.basketName(); } }

7. 인터페이스의 private 메소드, 자바 9

내부에서만 작동하는 private 메서드를 지원하기 시작함

package test.exam public interface Ball { void basketball(String team); void baseball(String team); default void playerInfo(){ String no1 = No1(); String no2 = No2(); System.out.println('no1 : ' + no1); System.out.println('no2 : ' + no2); } private static String No1(){ return '홍길동' } private static String No2(){ return '아무개' } }

참조

https://velog.io/@zayson/%EB%B0%B1%EA%B8%B0%EC%84%A0%EB%8B%98%EA%B3%BC-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-Live-Study-8%EC%A3%BC%EC%B0%A8-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4

728x90

from http://maximum-curry30.tistory.com/296 by ccl(A) rewrite - 2021-12-05 21:01:45