4월 25~26일 내용정리
코드짜고 쌤이 문제풀이해줌
부모 인터페이스
package study_0425_01;
/* 인터페이스는 후손들을 하나의 조상들로 엮는 역할을 한다.
* 클래스의 최고의 조상은 obeject이고, 인터페이스의 최고조상은 최상위인터페이스이다.
* 즉, 인터페이스는 인터페이스만 상속 받을수 있다.
*/
public interface toy {
//상수필드 선언
//추상메서드
public abstract void action();
//void action(); 만 써도 됨, 왜??
//인터페이스에서는 public static final abstract 이 기본으로 쓰임
}
상속받은 자식인터페이스-1
package study_0425_01;
public interface speaking extends toy{
//상수필드 선언
//추상메서드
public abstract void speaking();
}
상속받은 자식인터페이스-2
package study_0425_01;
public interface walking extends toy{
//상수필드 선언
//추상메서드
public abstract void walking();
}
상속받은 자식인터페이스-3
package study_0425_01;
public interface move extends toy{
//상수필드 선언
//추상메서드
public abstract void move();
}
부모 인터페이스2개를 구현한 자식클래스-1
package study_0425_01;
public class robot implements move,walking{
String NAME="변신로봇";
// 생성자는 초기화도 할수 있고, 자기자신을 호출할수 있다.
// 자기자신을 호출하는 기능으로 toy조상으로 연결시키는 버튼을 만들수 있다.
// public robot() {
// walking(); 자기 자신의 메서드를 호출하기
// move(); 자기 자신의 메서드 호출하기
// }
@Override
public void action() {
walking();
move();
}
@Override
public void walking() {
System.out.println(NAME+"이 걷는다.");
}
@Override
public void move() {
System.out.println(NAME+"이 팔을 움직인다.");
}
}
부모 인터페이스2개를 구현한 자식클래스-2
package study_0425_01;
public class doll implements speaking, walking{
String NAME="말하는 인형";
@Override
public void action() {
walking();
speaking();
}
@Override
public void walking() {
System.out.println(NAME+"이 걷는다.");
}
@Override
public void speaking() {
System.out.println(NAME+"이 말을 한다.");
}
}
부모 인터페이스2개를 구현한 자식클래스-3
package study_0425_01;
public class pooh implements move,speaking {
String NAME="곰돌이 푸";
@Override
public void action() {
speaking();
move();
}
@Override
public void speaking() {
System.out.println(NAME+"이 말을 한다.");
}
@Override
public void move() {
System.out.println(NAME+"이 팔을 움직인다.");
}
}
부모 인터페이스2개를 구현한 자식클래스-4
package study_0425_01;
public class dinosaur implements move,walking{
String NAME="공룡";
@Override
public void action() {
walking();
move();
}
@Override
public void walking() {
System.out.println(NAME+"이 걷는다.");
}
@Override
public void move() {
System.out.println(NAME+"이 팔을 움직인다.");
}
}
실행 클래스
package study_0425_01;
import java.util.ArrayList;
import java.util.Arrays;
import study_0425.jeonuchi;
public class main {
public static void main(String[] args) {
/* toy myrobot= new robot(); 부모타입으로 형변환
* 형변환 하는 이유는 부모의것만 제한해서 쓰고 싶을때 부모 타입으로 형변화 가능하다.
* robot myrobot= new robot(); 으로 객체 생성하면
* 부모로 부터 상속받은것과 자기자신의 기능까지 끌어다가 쓸수 있다.
*
* 다형성을 하는 이유 제한하기, 묶어주기, 코딩을 단순히
*/
toy myrobot= new robot();
toy mydoll= new doll();
toy mypooh= new pooh();
toy mydinosaur= new dinosaur();
//
// toy[] mytoy= {myrobot,mydoll,mypooh,mydinosaur};
//
// for(int i=0;i<4;i++) {
// mytoy[i].action();
// System.out.println();
// }
ArrayList<toy> mytoy = new ArrayList<toy>(Arrays.asList(myrobot,mydoll,mypooh,mydinosaur));
// mytoy.add(myrobot);
// mytoy.add(mydoll);
// mytoy.add(mypooh);
// mytoy.add(mydinosaur);
for(toy toy01:mytoy) {
toy01.action();
System.out.println();
}
}
}