자바기초(인터페이스)

bitna's study note·2022년 4월 26일
0

자바

목록 보기
55/119

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();
		}

	}

}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보