자바 72) 인터페이스 포켓몬

hahahoho셍·2021년 5월 15일
0

자바 공부

목록 보기
73/97
package ex10_interface;
//자바의 단점 : 다중 상속의 불가.
//클래스는 다중상속 불가

//인터페이스 : 구현부가 없다., 다중상속 가능, 객체 생성 불가(전체 추상)
interface Attack{
	//필드도 생성 가능 : 일반필드는 무용지물
	String name = "포켓몬의 공격"; //필드를 만들경우 스테틱 파이널,퍼블릭이 생략되어있다.
	void attack(); //public abstract 생략 가능
	
	//default 일반 메소드 생성 가능
	default void gameTime() {  //default를 앞에 쓰면 얘는 추상 메소드가 아니다란 말
		System.out.println("24시간 공격가능");
	}
}

interface Sound{
	String name = "포켓몬의 소리";
	void Sound(); //abstract 생략 가능
}
//피카
class Pika implements Attack, Sound {

	@Override
	public void attack() {  //인터페이스 사용시 퍼블릭으로 부모보다 범위가 더 커야함
		System.out.println("전기 공격");
		
	}

	@Override
	public void Sound() {
		System.out.println("파카 피카");
		
	}  
}
//꼬북
class Ggobu implements Attack, Sound{

	@Override
	public void attack() {
		System.out.println("물 공격");
		
	}

	@Override
	public void Sound() {
		System.out.println("꼬북꼬북");
		
	}
	
}

class GamePlay{
	void att(Attack a) {
		a.attack();
	}
	void sou(Sound a) {
		a.Sound();
	}
	
}

public class J20210504_06_인터페이스poketmon {
	public static void main(String[] args) {
		//다형성을 이용한 선언
		System.out.println(Attack.name);
		Attack p1 = new Pika();
		p1.attack();
		p1.gameTime();
		
		Sound p2 = new Pika();
		p2.Sound();
		
		Sound g1 = new Ggobu();
		g1.Sound();
		
		Attack g2 = new Ggobu();
		g2.attack();
		
		Ggobu g3 = new Ggobu();
		g3.attack();
		g3.Sound();
		g3.gameTime();
		
		GamePlay c1 = new GamePlay();
		c1.att(p1);
		c1.att(g3);
		c1.sou(p2);
		c1.sou(g3);
		
		
		
		
		
		
		
	}

}
profile
그냥 공부 한거 적는 벨로그 하하하핳ㅎ하하하핳하ㅏ

0개의 댓글

관련 채용 정보