수강한 클립명
상속에서 클래스 생성 과정과 형 변환
매서드 오버라이딩
다형성 - 1
다형성 - 2
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
코딩 비전공자라 학원에서 자바(코딩수업)수업을 수료했지만 실력부족을 느껴 기초부터 다시 해보자라는 생각과 웹개발의 전체적인 방법을 알아보고 싶어 주위에서 괜찮다고 했던 패스트캠퍼스 java/spring 웹 개발 마스터 를 수강하게 되었다.
완강을 하여 나만의 웹페이지를 만들고 이 미션수행을 통과해 환급을 받는게 올해 목표이다.
미션 일정
방법
상속에서 클래스 생성 과정과 형 변환
상속에서 클래스 생성 과정과 형 변환
- 하위 클래스가 생성되는 과정
하위 클래스가 생성 될 때는 항상 상위 클래스가 먼저 생성 됨
상위 클래스의 생성자가 호출되고 하위 클래스의 생성자가 호출 됨
하위 클래스의 생성자에서는 무조건 상위 클래스의 생성자가 호출되어야 함
하위 클래스에서 상위 클래스의 생성자를 호출하는 코드가 없는 경우 컴파일러는 상위
클래스 기본 생성자를 호출하기 위한 super()를 추가함
super()로 호출되는 생성자는 상위 클래스의 기본 생성자임
만약 상위 클래스의 기본생성자가 없는 경우 (매개변수가 있는 생성자만 존재 하는 경우)
하위 클래스는 명시적으로 상위 클래스의 생성자를 호출해야 함 (반드시 기본생성자를 명시적으로 상위클래스에 만들어야함)
--
상위 클래스로의 묵시적 형 변환 (업캐스팅)
상위 클래스 형으로 변수를 선언하고 하위 클래스 인스턴스를 생성 할 수 있음
하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로 묵시적 형변환이 가능 함
상속관계에서 모든 하위 클래스는 상위클래스로 묵시적 형변환이 됨. 단, 그 역은 성립하지 않음
ex) Customer(상위 클래스형) vc = new VIPCustomer()(하위 클래스형);
--
형 변환에서의 메모리
VIPCustomer() 생성자의 호출로 인스턴스는 모두 생성 되었지만 타입이 Customer이므로 접근 할 수 있는 변수나 메서드는 Customer의 변수와 메서드 임
--
클래스 계층구조가 여러 단계인 경우
Human은 내부적으로 primate와 mammal의 자료형을 모두 내포하고 있음 (사진참조)
매서드 오버라이딩
매서드 오버라이딩
하위 클래스에서 메서드 재정의 하기
오버라이딩(overriding)
: 상위 클래스에서 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지않는경우
하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음
메서드의 구현부만 바꿀수 있음
* 애너테이션 (@Override) << 컴파일러한에 오버라이딩된 거다 라고 의미를 정의하는것
--
형 변환과 오버라이딩 메서드 호출
Customer vc = new VIPCustomer();
vc.calcPrice(10000);
위 코드에서 calcPrice() 메서드는 어느 메서드가 호출 될 것인가?
자바에서는 항상 인스턴스 (여기서는 VIPCustomer)의 메서드가 호출됨 << 가상 함수 (= 가상 메서드)
다형성 - 1
다형성 - 1
다형성(polymorphism)이란?
하나의 코드가 여러 자료형으로 구현되어 실행되는 것
같은 코드에서 여러 실행결과가 나옴
정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나
객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징임
다형성 - 2
다형성 - 2
다형성의 사용함으로써 갖는 장점
다양한 여러 클래스를 하나의 자료형(상위 클래스)으로 선언하거나 형변환 하여 각 클래스가 동일한 메서드를 오버라이딩 한 경우,
하나의 코드가 다양한 구현을 실행 할 수 있음
유사한 클래스가 추가되는 경우 유지보수에 용이하고
각 자료형 마다 다른 메서드를 호출하지 않으므로 코드에서 많은 if문이 사라짐
--
상속은 언제 사용할까?
IS-A관계 (is a relationship : inheritance)
일반적인 (general) 개념과 구체적인 (specific) 개념과의 관계
상위 클래스 : 일반적인 개념 클래스 (예 : 포유류)
하위 클래스 : 구체적인 개념 클래스 (예 : 사람, 원숭이, 고래...)
단순히 코드를 재사용하는 목적으로 사용하지 않음
HAS-A 관계 (composition) : 한 클래스가 다른 클래스를 소유한 관계
코드 재사용의 한 방법
Student 가 Subject를 포함한 관계
ex) class Student {
Subject majorSubject;
}
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 15회차 미션 - 자바인강 (0) | 2021.04.07 |
---|---|
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 14회차 미션 - 자바인강 (0) | 2021.04.02 |
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 12회차 미션 - 자바인강 (2) | 2021.03.26 |
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 11회차 미션 - 자바인강 (0) | 2021.03.22 |
[패스트캠퍼스 수강후기] Java 웹 개발 마스터 올인원 패키지 Online 10회차 미션 - 자바인강 (0) | 2021.03.20 |