스마트 인재개발원/Java

2021-04-28 자바 interface 구현해보기

앨런튜링_ 2021. 4. 27. 16:49
public class Acher implements Skill {

	@Override
	public void attack() {
	
		// TODO Auto-generated method stub
		System.out.println("화살 쏘기");
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("화살 쏘면 달리기");
		
	}
	//상속을 물려 받을때 extends
	//인터페이스를 구현할 때 implements
	
	
	
	

}
​
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Acher a = new Acher();
		a.attack();
		a.run();
		
		System.out.println();
		
		Warrior w = new Warrior();
		System.out.println("전사 캐릭터 서버 : " + w.sever);
		w.attack();
		w.run();
		w.skin();
		
	}

}
public class Warrior implements Skill, Skin {
	
	public void attack() {
		System.out.println("검 휘두르기..!!");
	}
	
	public void run() {
		System.out.println("말을 타고 달려가기");
	}

	@Override
	public void skin() {
		System.out.println("300 스파르타 전사느낌!");
		
	}
	
	

}
public interface Skin {

	public abstract void skin();
}

public interface Skill {
	//Interface는 클래스가 아니다!
	//new 라는 키워드를 사용해서 객체생성할 수 없다. 
	
	//인터페이스 내의 변수들은 모두 상수로 지정된다.
	//final키워드를 생략할 수 있다.
	
	public final String sever = "스카니아";
	public abstract void attack();
	//abstrack 키워드가 생략되어도 자동적으로 추상 메소드로 인지한다.
	
	
	//추상화와 인터페이스의 공통점
	//1.선언만 있고 구현은 없는 기능
	//2.new라는 키워드로 객체생성 x
	//3.상속을 받거나 구현이 된 자식들의 한해서는 객체 생성이 가능하다.

	
	//추상화와 인터페이스의 차이점!
	// 추상클래스: 동일한 부모를  가지는 클래스를 묶어 상속을 받아 기능을 더 확장하는 것 
	// 인터페이스 : 구현 객체가 같은 동작을 한다는 것을 보장하기 위한 목적
	
	//2.추상클래스의 경우 단일 상속가능 , 인터페이스 경우 다중으로 구현(상속)이 가능하다. 
	// 인터페이스 경우 다중으로 구현(상속/implements)이 가능하다.
	
	
	
	
	public abstract void run();
	
	
	
	
}