상속 7

상속, 다운 캐스팅, instanceof

⭐컴파일 허가 바라보던 타입을 부모 타입이 아니라 자식 타입으로 보는 것을 다운 캐스팅(Down Casting)이라고 합니다 글만으로는 이해하기 어려워 가벼운 예제를 통해 알아보겠습니다 public class ZR { public void make(){ System.out.println("야야야"); } } public class RR extends ZR{ public void rrzd(){ System.out.println("호호 "); } } 2개의 클래스를 만들어주었습니다 RR 클래스는 현재 ZR클래스를 상속하고있습니다 여기서 RR클래스의 rrzd 를 부르면 어떻게 될까요?? 이렇게 컴파일 에러가 발생합니다 왜 이럴까요?? 그냥 생각해보면 당연하게 불러올 수 있을 줄 알았던 코드인데 이런 경우에 컴..

JAVA 2022.03.19

2022.03.16 Interpace 활용 <3단 구현>

마지막 시간에 정말 중요한 내용 값비싼 내용들을 설명해 주셨습니다 우선 시작은 상속보다는 조합을 사용해라!!!로 시작했습니다 그래서 상속의 문제점에 관련해서 왜 Interpace 를 사용해야 하는가 그리고 Interpace는 어떻게 활용하는가에 대해서 지금부터 시작해 보겠습니다 우선 Interpace 의 사용 중에 마킹용 Interpace 라는것이 있습니다 마킹용 Interpace 마킹용 interface는 전혀 의미가 없는 interface를 의미하는데 그 활용은 다른 종류의 전혀 다른 객체를 하나의 타입으로 묶기 위한 존재 로 활용됩니다!!! 그리고 Interpace 또 다른 활용 조합이라는 것이 있습니다 바로 처음에 말했던 상속보다는 조합을 사용해라 는 이곳에서 나온 이야기입니다 상속의 단점 이런 ..

2022.03.15 데이터 위주의 상속

오늘은 수업의 시작은 지난 수업의 상속에 관한 이야기로 시작했습니다 바로 상속에 관한 코딩의 팁을 주셨습니다 보통 코딩을 하다 보면 타입을 써야 하는 경우가 많습니다 예를 들면 파라미터 , 리턴 타입 , 자료구조 등이 있죠 그럴 때 타입을 자식이 아닌 부모 타입으로 가지는 것이 좀 더 유연하다 부모의 타입으로 사용해라 라는 팁을 주셨습니다 ⭐ 타입을 만들 때는 자식 말고 부모 타입으로!! 데이터 위주의 상속 데이터 위주의 상속을 할 때는 이런 식으로 기존 데이터에서 추가적인 데이터가 필요할 때 사용해줍니다 그리고 데이터 위주의 상속을 설계하고 코딩할 때의 주의점은 바로 부모를 먼저 만드는 것!입니다 코딩을 할 때는 부모를 먼저 만드는 것이 아닌 자식을 먼저 만들고 자식 데이터들에서 중복되는 것들을 뽑아서..

2022.03.14 상속을 이용해서 UI 만들어보기

오늘 배운 로직 위주의 상속을 이용해서 UI를 만들었습니다 설계 가장 먼저 부모인 BasicUI를 만들어주었습니다 BasicUI public class BasicUI { private Scanner scanner; //Scanner 생성자 public BasicUI(Scanner scanner) { this.scanner = scanner; } //메시지 출력하는 기능 public void print(String msg){ System.out.println(msg); } //String 타입 입력받기 public String input(String msg){ System.out.println(msg); return scanner.nextLine(); } //int 타입 입력받기 public int inp..

눈 속임 Override

ui에서 input를 찾으면 아래 그림처럼 내부적으로 돌아가게 됩니다 이러면 어떻게 할 건데..? 이런 경우도 있을 수 있습니다 바로 SampleUI에 BasicUI에 input 하고 똑같은 input가 있다면??? 그럼 실행하는 입장에서는 BasicUI까지 올라갈 필요 없이 SampleUI에 있는 input를 보게 될 것입니다 이런 걸 바로 Override라고 합니다 Override 컴파일할 때는 부모 타입에 있는 메서드를 바라보고 있는데 실제로 실행을 할 때는 실핼될때 객체에 있는 메서드가 실행되는 것을 말합니다 마치 눈속임 같지요?? ✨Override는 상속과 인터페이스 관계에서만 성립합니다!! 그럼 왜 Override를 할까요?? 바로 상황에 따라서 다르게 동작해야 하는 부분을 Override로 ..

JAVA 2022.03.14

상속 심화

상속의 예제를 보면서 상속을 좀 더 이해해보려고 합니다 public class BasicUI { private Scanner scanner; //Scanner 생성자 public BasicUI(Scanner scanner) { this.scanner = scanner; } //String 타입 입력받기 public String input(String msg){ System.out.println(msg); return scanner.nextLine(); } //int 타입 입력받기 public int inputInt(String msg){ String inputStr = input(msg); return Integer.parseInt(input(msg)); } } BasicUI Class에서는 Scanne..

JAVA 2022.03.14

상속이란?

상속이란? 부모 Class와 자식 Calss 가있으며 자식 Class 가 부모 클래스를 선택해서 그 부모의 내용을 물려받아서 가지고 오는 것 자식 클래스는 기본적으로 부모의 모든 메서드 + (자신의 고유 기능) 따라가 자식 클래스는 부모 클래스보다 기능이 더 많은 경우가 많습니다 상속의 기준 판단하기 보통 JAVA상속을 검색하면 이런 이미지가 나온다 이 이미지가 의미하는 뜻은 알겠지만 단순하게 이 구조가 상속이다!라고 생각하면 안 된다 그 이유는 위 구조는 로직의 구조이다 로직의 구조로서 저 데이터를 보면 상속의 대상이지만 만약 저걸 데이터로써 본다면 어떨까??? 데이터로써 보면 이런 구조일 것이다 이것은 클래스 하나에 여러 개의 인스턴스일 뿐이다 즉 상속의 대상으로 보기 어렵다 그렇다면 상속을 어떤 기..

JAVA 2022.03.14