햄찌개

Java 14일차 추상클래스, 인터페이스 본문

초급 JAVA

Java 14일차 추상클래스, 인터페이스

햄찌개 2020. 8. 31. 12:48


18. 추상클래스(abstract)
        - 미완성된 클래스
                : 미완성된 메서드를 포함하고 있다.
        - 추상메서드
                : 미완성된 메서드이다.
                : 메서드는 선언부와 구현부로 이루어져있지만 추상메서드는 구현부가 없다.
        - 어떤 기능을 수행할 목적으로 만든것인지??

19. 인터페이스(interface)
        - 일종의 추상클래스이지만 멤버변수로 
        - 작성방법 
                interface 인터페이스명{
                public static final 변수타입 변수명 = 값;
                public abstract 반환타입 메서드명(메게변수);
                }
        - 모든 변수는 public static final 이어야 한다. -> 생략 가능 
        - 모든 메서드는 public abstract 이어야한다. -> 생략가능
        - 인터페이스의 상속
                : 인터페이스는 클래스를 상속할 수 없다.
                          ->클래스를 상속받으면 인터페이스가 아니게 된다.
                : 인터페이스는 인터페이스를 다중상속할 수 있다.
        - 인터페이스의 구현
                : 자체로 객체를 생성할 수 없다.
                : 자신의 정이된 추상메서드의 몸통을 만들어주는 클래스가 존재해야한다.
                : 상속 -> extends  구현 -> implements
                : 인터페이스의 일부분만 구현하였다면 해당클래스는 추상클래스가 된다.
                : ~을 할수 있는 (~able)  
                : IMember => IMemberImpl
        - 인터페이스의 장점
                : 개발시간을 단축 시킬수 있다.
                : 표준화가 가능하다.
                : 서로 관계가 없는 클래스들에게 관계를 설정해 줄수 있다.
                : 독립적인 프로그래밍이 가능하다.
        - 인터페이스의 이해
                : 클래스를 사용한 쪽(user)과 제공하는 쪽(provier)로 나눈다.
                : 메서드를 사용하는 쪽에서는 선언부만 알면된다.
                           A -I -B (직접관계 -> 간접관계)

 

        - 인터페이스 예제

public class InterTest {

	public static void main(String[] args) {

	}
}
class Unit2{
	int x;
	int y;
	int currentHP;
}
class Fight extends Unit2 implements Fightable{

	@Override
	public void move(int x, int y) {
	}
	@Override
	public void attack(Unit2 u) {
	}
}

interface Fightable extends Movable,Attackable {
	
}

interface Movable{
	void move(int x, int y);
}

interface Attackable{
	void attack(Unit2 u);
}