
안녀 안녕!!
오늘은 신나는 자바 시간이야!
내가 너무 시간이 타이트 해서
자주는 못올리더라도
핵심은 쏙쏙 빼서
확실히 알려주려고
노력을 하고 있어 ㅠㅠ ㅎㅎ
비도오고 축~ 처지지만
즐겁게 한번 살펴보자!
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!
'Lang [ ] java = { > Java' 카테고리의 다른 글
DAO, DTO, VO, ENTITY를 알아보자 (0) | 2022.02.10 |
---|---|
[Java] Exception, 예외처리란? (5) | 2020.05.28 |
[Java] 추상화란 무엇일까? (5) | 2020.05.14 |
[Java] Overloading, 오버로딩이란? (6) | 2020.04.29 |
[Java] this와 this()..? 차이점 알아보기 (4) | 2020.04.27 |