Java/Excercise
interface ch02 HomeMainTest
낭구리
2021. 8. 31. 17:41
package ch02;
public class MainTest {
public static void main(String[] args) {
Television television = new Television();
Refrigerator refrigerator = new Refrigerator();
ToyRobot toyRobot = new ToyRobot();
television.turnOn();
television.turnOff();
System.out.println("-----");
refrigerator.turnOn();
refrigerator.turnOff();
System.out.println("-----");
toyRobot.turnOn();
toyRobot.turnOff();
System.out.println("-----");
//인터페이스를 사용하여 표준을 만들어 틀을 사용할 수 있게된다.
//다형성 - 배(선박, 신체, 과일) 배라는 이름도 여러가지 의미가있다.
//다양한 형태로 바라보는 것
//배열만들어서 크기는 3개 0,1,2 인스턴스 변수 넣어주세요.
RemoteControler[] remote = new RemoteControler[3];
remote[0] = television;
remote[1] = refrigerator;
remote[2] = toyRobot;
//문제 1 확장 for문 이용해서 turnOn()메서드 호출
for (RemoteControler remoteControler : remote) {
remoteControler.turnOn();
}//RemoteControler(타입) remoteControler(매개변수) remote(변수)
System.out.println("-----");
//문제 2 확장 for문 이용해서 turnOff()메서드 호출
for (RemoteControler remoteControler : remote) {
remoteControler.turnOff();
}
System.out.println("-----");
//문제 3. 일반 for문을 사용해서 클래스타입이 ToyRobot이면 name을 화면에 출력해주세요
//instanceof 연산자, 다운 캐스팅
//1.for문 만들기
//2.만약 TouRobot --> true{}
//3.(int)0.8
for (int i = 0; i < remote.length; i++) {
if(remote[i] instanceof ToyRobot) {
//ToyRobot이라는 것이 트루라면 {} 안에 실행
String name = ((ToyRobot)remote[i]).name;
System.out.println(name);
}
}
//요구 사항 추가!! 인터페이스 추가
//냉장고에 문이 열렸으면 멜로디 소리를 나게하라.(기능적인측면 -> 인터페이스로 접근)
//장난감 로봇에 건전지가 거의 없으면 멜로디 소리가 나게하라.
//인터페이스 장점.
//표준화가 가능하다.
//서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
//클래스 간에 결합도를 낮춰서 유연한 코드를 설계할 수 있다.(결합도가 낮아야 좋은 코드)
//정리
//객체지향 패러다임 핵심
//객체와 객체간에 상호협력해서 코드를 설계해나간다.(버스,지하철, 학생, 스타크래프트)
//객체와 객체간에 관계를 정의하여 코드를 설계해나간다.(상속, 포함관계, 추상클래스, 인터페이스)
//다형성(클래스를 다양한 형태로 바라본다.)
}
}