[자바]인터페이스

allnight5·2023년 1월 26일
0

자바 개념정리

목록 보기
26/28

들은 영상
인터페이스도 구현 클래스의 부모이다

오버라이딩 규칙: 조상보다 접근제어자가 좁으면안된다.
interface Fightable에 move가 private라면 private과 public 접근제어자를
쓸수있으나 public이라면 private와 protect를 사용할수없다.

interface Fightable{
	void move(int x, int y); // public abstract가 생략된
    void attack(Fightable f); // public abstract가 생략된
    //attack의 매게변수가 Fightable인데 이 의미는
    // Fightable 인터페이스를 구현한 클래스의 인스턴스만 가능하다는 뜻이다
}
class Fighter extends Unit implements Fightable{
	//오버라이딩 규칙: 조상보다 접근제어자가 좁으면안된다.
    //interface Fightable에 move가 private라면 private과 public 접근제어자를 
    //쓸수있으나 public이라면 private와 protect를 사용할수없다.
    
	public void move(int x, int y){ 
    	System.out.println("현재 위치는 : "+ x +", " + y+"입니다");
    }
    public void attack(Fightable f){ 
    	System.out.println(f+"를 공격"); 
    }
    public void bash(int y){
    	System.out.println("배쉬 공격은 : "+ x +"입니다");
    }
    Unit u = new Fighter();
    Fightable f = new Fighter();
    f.move(100,200);
    f.attack(new Fighter());
    //f.bash(50); Fightable 인터페이스에 
    //bash라는 메소드가 없어 사용할수없다.
    Fightable getFightable(){
    	Fighter f = new Fighter();
        return f;
    }
}

인터페이스에 있는 메소드만 다형성을 이용하여 사용할수있다.

인터페이스를 메서드의 리턴타입으로 지정할수있다.

Fightable method(){
	Fighter f = new fighter();
    return f
    // 위의 두문장을 한문장으로 바꾸면 return new Fighter();게 된다.
}
public class FighterTest{
	public static void main(String[] args){
    	Fighter f = new Fighter();
        f.getFightable();
    }
}

스프링 핵심원리 기본편(인프런 강의)

장점
1.클라이언트는 대상의 역할(인터페이스)만 알면된다.
2.클라이언트는 구현 대상의 내부구조를 몰라도 된다.
3.클라이언트는 구현대상의 내부구조가 변경되어도 영향을 받지 안흔ㄴ다.
4.클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.

개념
1.인터페이스의 구현체는 다 인터페이스의 메소드를 오버라이딩 하는것이다.

현실과 비교하는 간단설명

과자라는 인터페이스가 있고 구현채들에는 과자의 촉감, 케이스, 양이 있는데
양파링이라는 과자가 촉감이 바뀌고 껍질 양이 바뀌어도 과자라는 그 큰 틀안에 있고
양파링 과자 라고 한다면 이해하는것처럼

과자에 양파링이라는 구현체의 내용이 바뀌어도 과자라는 인터페이스에 필요한 내용을 구현해 뒀다면 아무문제 없이 적용된다.

profile
공부기록하기

0개의 댓글