인터페이스
- 인터페이스(추상클래스 : 부모클래스) : 추상클래스와 비슷,
내부에 정의되는 함수는 모두 추상함수됨
내부에 정의되는 속성은 모두 정적(공유)상수됨(static final)
- 정의 사용법 : public interface 인터페이스명 {}
- 상속 사용법 : public class 자식클래스명 implements 부모인터페이스1, ..., 부모인터페이스n {}
=> 함수 재정의가 필요함
- 목적 : 1) 프로젝트에서 이름(함수/속성) 표준화를 위해 사용
2) 다형성 이용
더보기
package chap08.exam01;
/**
* packageName : chap08.exam01
* fileName : SmartTelevisionApplication
* author : L.DH
* date : 2023-09-22
* description : 실행클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class SmartTelevisionApplication {
public static void main(String[] args) {
// TODO: 인터페이스/추상클래스 객체 생성이 안됨
SmartTelevision smartTelevision = new SmartTelevision();
// TODO: 다형성 이용
RemoteControl remoteControl = smartTelevision;
Searchable searchable = smartTelevision;
// 기능 이용하기
remoteControl.turnOn(); // tv 기본기능 이용
remoteControl.turnOff();
searchable.search("www.naver.com"); // 검색 이용
}
}
더보기
package chap08.exam01;
/**
* packageName : chap08.exam01
* fileName : RemoteControl
* author : L.DH
* date : 2023-09-22
* description : 인터페이스
* 요약 : 인터페이스(추상클래스 : 부모클래스) : 추상클래스와 비슷,
* 내부에 정의되는 함수는 모두 추상함수됨
* 내부에 정의되는 속성은 모두 정적(공유)상수됨(static final)
* 정의 사용법 : public interface 인터페이스명 {}
* 상속 사용법 : public class 자식클래스명 implements 부모인터페이스1, ..., 부모인터페이스n {}
* => 함수 재정의가 필요함
* 목적 : 1) 프로젝트에서 이름(함수/속성) 표준화를 위해 사용, 2) 다형성 이용
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public interface RemoteControl {
// TODO : 속성 == 정적(공유) 상수(명명법 : 모두 대문자)
int MAX_VOLUMN = 10;
int NIM_VOLUMN = 1;
// TODO : 함수 == 추상함수 (실행블럭{} 없음)
void turnOn(); // 리모콘 켜기 함수
void turnOff(); // 리모콘 끄기 함수
}
더보기
package chap08.exam01;
/**
* packageName : chap08.exam01
* fileName : Searchable
* author : L.DH
* date : 2023-09-22
* description : 검색 인터페이스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public interface Searchable {
void search(String url);
}
더보기
package chap08.exam01;
/**
* packageName : chap08.exam01
* fileName : SmartTelevision
* author : L.DH
* date : 2023-09-22
* description : 자식클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class SmartTelevision implements RemoteControl, Searchable {
// alt + insert : 메서드 구현(선택)
@Override
public void turnOn() {
System.out.println("TV를 켭니다.");
}
@Override
public void turnOff() {
System.out.println("TV를 끕니다.");
}
@Override
public void search(String url) {
System.out.println(url + " 를 검색합니다.");
}
}
매개변수의(함수) 다형성
- 매개변수에 자식객체를 넣으면 자식객체의 함수가 호출됨
더보기
package chap08.exam02;
/**
* packageName : chap08.exam02
* fileName : SoundableApplication
* author : L.DH
* date : 2023-09-22
* description : 매개변수의(함수) 다형성
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class SoundableApplication {
// 공유(정적, 전역 함수)
static void printsount(Soundable soundable) {
// TODO : 매개변수에 자식객체를 넣으면 자식객체의 함수가 호출됨(sound())
System.out.println(soundable.sound()); // 부모 인터페이스의 함수호출
}
public static void main(String[] args) {
// TODO : 함수의 매개변수의 다형성
printsount(new Cat()); // 야옹
printsount(new Dog()); // 멍멍
}
}
더보기
package chap08.exam02;
/**
* packageName : chap08.exam02
* fileName : Soundable
* author : L.DH
* date : 2023-09-22
* description : 부모 인터페이스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public interface Soundable {
String sound();
}
더보기
package chap08.exam02;
/**
* packageName : chap08.exam02
* fileName : Cat
* author : L.DH
* date : 2023-09-22
* description : 자식 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class Cat implements Soundable {
// 메소드 구현 : alt + insert : 야옹
@Override
public String sound() {
return "야옹";
}
}
더보기
package chap08.exam02;
/**
* packageName : chap08.exam02
* fileName : Dog
* author : L.DH
* date : 2023-09-22
* description : 자식 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class Dog implements Soundable {
// 메소드 구현 : alt + insert : 멍멍
@Override
public String sound() {
return "멍멍";
}
}
연습문제) 매개변수의 다형성 예제(인터페이스 이용)
더보기
package chap07.verify.exam13;
/**
* packageName : chap07.verify.exam13
* fileName : DriverApplication
* author : ds
* date : 2022-09-30
* description : 실행 클래스, 연습문제)인터페이스
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2022-09-30 ds 최초 생성
*/
// TODO: 연습문제) 매개변수의 다형성 예제(인터페이스 이용)
// 아래 결과를 보고
// Driver(전략클래스) 클래스, Bus 클래스 , Taxi 클래스를 완성하세요
// 결과 :
// 버스가 달립니다.
// 택시가 달립니다.
public class DriverApplication {
public static void main(String[] args) {
Driver driver = new Driver();
Bus bus = new Bus();
Taxi taxi = new Taxi();
driver.drive(bus); // 버스가 달립니다.
driver.drive(taxi);// 택시가 달립니다.
}
}
더보기
package chap07.verify.exam13;
/**
* packageName : chap07.verify.exam13
* fileName : Vehicle
* author : ds
* date : 2022-09-30
* description : 인터페이스
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2022-09-30 ds 최초 생성
*/
public interface Vehicle {
public void run();
}
더보기
package chap07.verify.exam13;
/**
* packageName : chap07.verify.exam13
* fileName : Driver
* author : L.DH
* date : 2023-09-22
* description : 전략 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class Driver {
void drive(Vehicle vehicle) {
vehicle.run();
}
}
더보기
package chap07.verify.exam13;
/**
* packageName : chap07.verify.exam13
* fileName : Bus
* author : L.DH
* date : 2023-09-22
* description : 자식 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class Bus implements Vehicle {
@Override
public void run() {
System.out.println("버스가 달립니다.");
}
}
더보기
package chap07.verify.exam13;
/**
* packageName : chap07.verify.exam13
* fileName : Taxi
* author : L.DH
* date : 2023-09-22
* description : 자식 클래스
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class Taxi implements Vehicle {
@Override
public void run() {
System.out.println("택시가 달립니다.");
}
}
연습문제)다형성 예제(인터페이스 이용)
더보기
package chap07.verify.exam14;
/**
* packageName : chap07.verify.exam14
* fileName : VehicleApplication
* author : ds
* date : 2022-09-30
* description : 실행 클래스, 연습문제)다형성 예제(인터페이스 이용)
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2022-09-30 ds 최초 생성
*/
// TODO: 연습문제) 아래 결과를 보고 Bus 클래스를 완성하세요.
// 결과 :
// 버스가 달립니다.
// 승차요금을 체크합니다.
public class VehicleApplication {
public static void main(String[] args) {
Vehicle vehicle = new Bus();
vehicle.run(); // 버스가 달립니다.
Bus bus = (Bus)vehicle; // 강제 타입 변환 (원복)
// bus객체의 고유 함수 : checkFare()
bus.checkFare(); // 승차요금을 체크합니다.
}
}
더보기
package chap07.verify.exam14;
/**
* packageName : chap07.verify.exam14
* fileName : Vehicle
* author : ds
* date : 2022-09-30
* description : 인터페이스
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2022-09-30 ds 최초 생성
*/
public interface Vehicle {
public void run();
}
더보기
package chap07.verify.exam14;
/**
* packageName : chap07.verify.exam14
* fileName : Bus
* author : L.DH
* date : 2023-09-22
* description :
* 요약 : 자식 클래스
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* ———————————————————————————————————————————————————————————
* 2023-09-22 L.DH 최초 생성
*/
public class Bus implements Vehicle {
public void run() {
System.out.println("버스가 달립니다.");
}
void checkFare(){
System.out.println("승차요금을 체크합니다.");
}
}
'Java' 카테고리의 다른 글
MVC 디자인 패턴 (0) | 2023.09.26 |
---|---|
[Java] chapter_10 (0) | 2023.09.25 |
[Java] chapter_07 (0) | 2023.09.21 |
[Java] chapter_06 (0) | 2023.09.20 |
[Java] chapter_04 ~ 05 (0) | 2023.09.19 |