on
[백기선] 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