반응형

안녀 안녕!!

오늘은 신나는 자바 시간이야!

 

내가 너무 시간이 타이트 해서 

자주는 못올리더라도

핵심은 쏙쏙 빼서

확실히 알려주려고

노력을 하고 있어 ㅠㅠ ㅎㅎ

비도오고 축~ 처지지만

즐겁게 한번 살펴보자!


interface

 

이친구도 상속의 개념을 가지고 있어!

주로 상속을 할때는

 

class Test extends Test2 {

}

 

이런식으로 기존의 클래스인 Test에

Test2라는 클래스를 상속하여 사용하지만

 

여기서 문제점이 발생하지!

"다중 상속이 안된다"라는 거지

 

막장 드라마로 생각해보자..!

"내친구 녀석인 철수 아빠, 동수 아빠한테 재산상속을 받을 수 없다니!! "

이렇게 말을 할 수 있을까?

 

즉 상속의 개념은 1:1이다 이거야

 

"나 : 내자식"

 

하지만 이런 말도 안되는걸 해결 해줄 녀석이

interface라는 친구야

 

극적으로 막장드라마를 만들어줄 녀석이야

 

public class Main {
	public static void main(String[] args) {
		철수아빠 a = new 철수아빠();
		a.재산상속();
		a.상속포기();
		
		동수아빠 b = new 동수아빠();
		b.재산상속();
		a.상속포기();
        
        //막장 버전
        철수아빠 a = new 철수아빠();
        동수아빠 b = new 동수아빠();
        a.재산상속();
        b.재산상속();
        
        //으리으리 버전
        철수아빠 a = new 철수아빠();
        동수아빠 b = new 동수아빠();
        a.재산포기();
        b.재산포기();
        
	}
}

class 철수아빠 implements 재산상속시나리오, 상속포기기시나리오 {
	public void 재산상속() {
		System.out.println("상속됐다! 배신은 막장의 시작이지!");
	}

	public void 상속포기() {
		System.out.println("친구를 배신할 수 없어!");
	}
}

class 동수아빠 implements 재산상속시나리오, 상속포기기시나리오 {
	public void 재산상속() {
		System.out.println("상속됐다! 배신은 막장의 시작이지!");
	}

	public void 상속포기() {
		System.out.println("친구를 배신할 수 없어!");
	}
}

interface 재산상속시나리오 {
	abstract public void 재산상속();
}

interface 상속포기기시나리오 {
	abstract public void 상속포기();	
}

 

쉽게 a와 b

재산 상속과 상속포기를 따라가면

 

알 수 있을거야!

 

interface를 사용할 때는 implements를 사용을해!

그리고 인터페이스의 선언은 interface ['인터페이스명'] { }

 이렇게 선언을 할 수가 있어

 

지금 써둔건 두가지 시나리오를 이런식으로

interface로 두개 다~ 받을 수 있다!를 적어둔거야


이 친구도 좀 추상적인 친구라고 말해주고 싶은데

이녀석은 인터페이스안에

메소드를 무조건 강제로 구현을 하고 있어야해

강제성이 필요한 친구야

 

강제성을 갖는 유비, 관우, 장비로

interface, abstract, final이 있어!

 

<출처:  네이버블로그 > ( 수정)

 

그리고 추상화랑은 별반 차이가 없어보이지만

헷갈릴까봐 차이점을 설명해주자면

 

추상화는 1개의 클래스만 상속이 가능하고

interface는? 모든 멤버의 메소드가

추상 메소드여야 여러개를 동시상속이 가능해

그러다 보니까 큰 프로젝트때,

모듈화와 더불어 상속 개념을 참 많이 사용을 하지


마지막 알아두어야 할것!

이 친구는 보기엔 class와 참 닮았어

하지만 멤버 변수를 public static final이라는 형태만 사용하고

메소드도 abstract public 형태만 사용이 가능해

그러다 보니까 강제성을 가진거라고 설명을 한거야

 


오늘의 정리.

 

추상화보다 더 추상적인 녀석이다!

강제성을 가지고 있다!

다중 상속이 목적이다!

implements로 사용한다!

 

오늘은 그럼 20000!

반응형