Step it up now

인터페이스 본문

개인공부/java

인터페이스

케잉 2023. 12. 17. 20:01

- 추상 메서드의 집합 (암기!)    .. 그외에 부가적으로 상수, static 메서드, default 메서드
- 구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public)  

- 인터페이스는 항상 public, abstract이니까 생략가능  


- 객체에서 다른객체의 변수에 접근하려면 메서드를 통해서 접근해야함 (캡슐화)
t.hour (x)
t.getHour (o)

- 추상클래스와 인터페이스의 차이는?

추상클래스: 일반클래스인데 추 상메서드를 갖고있는것 
인터페이스: 추상메서드만 갖고있음 그외 아무것도 없음

 

interface 인터페이스이름 {
	public static final 타입 상수이름= 값; // 상수
    public abstract 메서드이름(매개변수목록); // 추상메서드
}

 

변수는 가질 수 없음 

 

 

 

인터페이스의 상속 

- 인터페이스 조상은 인터페이스만 가능 (Object가 아님) 

- 다중 상속이 가능 (조상 여러개) (추상메서드는 충돌해도 문제 없음)

//다중상속 가능
interface Fightable extends Movable, Attackable {  }

 

- 추상메서드는 충돌해도 문제 없음

{  } 이 없기떄문에 내용이 다를게 없어서 충돌문제 없음 

 

 

인터페이스의 구현 (=미완성 설계도 완성)

- 인터페이스에 정의된 추상 메서드를 완성하는 것 

 

class 클래스이름 implements 인터페이스 이름 {
		// 인터페이스에 정의된 추상메서드를 모두 구현해야 한다 
}

//cf. 추상클래스는 extends 사용

 

 

--Fightable 인터페이스--
interface Fightable {
	void move(int x, int y);
    void attack(Unit u);
}


// Fighter 클래스는 Fightable 인터페이스를 구현했다 
// 추상메서드의 몸통을 만들어줘서 abstract 없다 
class Fighter implements Fightable {
	public void move(int x, int y) {    } 
    public void attack(Unit u) {    }
}

 

 

인터페이스의 구현이란??

인터페이스의 추상 메서드 몸통 {  } 만들기 (미완성 설계도 완성하기)

 

//추상클래스 구현 - 미완성 Player에서 상속받아 AudioPlayer 완성
class AudioPlayer extends Player {
	void play(int pos) {  }  //추상메서드 구현
    void stop() {   } //추상메서드 구현
    
//인터페이스 구현 - 미완성 Fightable에서 구현 
class Fighter implements Fightable {
	public void move (int x, int y){   }
    public void attack (Unit u) {   }
}

 

 

'개인공부 > java' 카테고리의 다른 글

if문  (0) 2024.03.19
메서드 호출, 값 전달  (1) 2024.01.15
추상메서드/ 추상클래스  (0) 2023.12.12
오버라이딩(overriding)  (0) 2023.12.04
다형성  (0) 2023.10.27