학원에서 필기 열심히 했으니까 올려줘야지ㅎㅎ
상속 (inheritance)
'클래스 간의 관계를 맺어줌'
-부모 클래스(parent class)
-자식 클래스(child class)
=>is a관계
ex) 고양이는(자식) is a 동물이다.(부모)
체크카드는 is a 카드다.
신용카드는 is a 카드다.
클래스가 부모&자식 (상속) 관계가 되면
-자식 클래스는 부모 클래스가 가진 재산(변수, 메서드 등등)을 물려받아서 사용 가능하다. -> 코드의 재사용이 가능하다!!
-공통 내용을 미리 제작해두고 여러 곳에서 재사용 하겠다. -> 코드 중복을 최소화!
-자식 클래스는 부모 클래스 멤버를 자기 것인양 사용 가능하지만 부모 클래스는 자식 클래스가 직접 정의한
멤버에는 접근할 수 없다.
-상속 관계에서 자식 클래스는 항상 부모 클래스보다 멤버 갯수가 많거나 같다.
=>하지만!! 멤버 갯수가 많다고 해서 데이터 타입의 크기가 큰 것은 아님. 데이터 타입 자체는 부모가 더 크다!! (고양이<동물)
오버라이드
부모에게 물려받은 멤버(메서드)를 재정의(덮어쓰기)
->그대로 사용하지 않고 내 기호에 맞게 고쳐쓰겠다. 독립적인 영역 확보.
오버라이드는 오버라이드만 아는 것이 아니라 오버로드와 비교해서
어떤 점이 다른지 확실히 구분할 줄 알아야 함! 면접에서 물어볼 수 있다고 하셨다!!
★★★★★오버로드 VS 오버라이드
오버로드 : 한 클래스 내에서 동일한 이름의 메서드를 여러 개 정의하는 것.
-메서드 이름이 같아야 하고
-입력 파라이머터 개수나 데이터 타입이 달라야만 성립한다.
-리턴 타입은 같던 다르던 상관없다.
오버라이드 : 상속을 통해 물려받은 메서드를 재정의하는 것.
-물려받은 메서드 이름이 동일해야 하고
-입력 파라미터 개수, 데이터 타입도 기존에 물려받은 메서드와 동일해야 하고
-리턴 타입도 같아야 한다!
포함/합성 (composition)
상속 : is a 관계
포함/합성 : has a 관계
포함/합성은 특정 클래스의 멤버 변수 및 구성 요소로 다른 클래스 객체를 사용하는 것.
추상화 vs 구체화
추상화
-공통 요소를 찾아서 부모 클래스로 제작하는 것.
ex) 슬픈 노래는 발라드(부모 클래스)로 묶자!
구체화
-더 자세하게 명시.
-더 작은(구체적인)데이터 타입.
ex )int의 범위는 long 범위보다 더 구체적이다.
개, 고양이는 동물의 공통적인 특징을 가지지만 더 구체적이다.
-자식 클래스로 제작
일반 제어자 (non-access modifiers)
final //변경하지 마!! (abstrace : 완전 반대)
클래스 (final class)에서 의미
-다른 클래스의 부모 클래스가 될 수 없다.
-상속받아서 변경하지 말고, 그대로 쓰라는 의미.
메서드 (final method)에서 의미
-오버라이드 하지마!
-덮어쓰지 말고, 있는 그대로 사용하라는 의미
변수(final variable)에서 의미
-멤버 변수, 지역 변수 모두 한 번 값을 지정하면 값을 변경할 수 없다.
-변수 -> 상수
예제)
final을 선언했기 때문에
이미 10으로 정해진 값을 변경할 수 없고 에러가 뜨는 것이다.
abstact //반드시 완성해서 쓸 것!
클래스 (추상 클래스 abstract class)
-반드시 상속받아서 완성(더 구체화)해서 사용하라는 뜻.
-미완성 클래스
메서드 (추상 메서드 abstract method)
-선언부만 있고, 실제 수행될 코드가 없는 상태의 메서드
-반드시 오버라이드를 통해 완성해서 사용하라는 뜻.
변수에서는 사용 X, 변수는 변하니까.
예제)
EmptyCan 클래스에서 abstract를 선언하지 않았다면 CanTest 클래스에서
EmptyCan emptyCan = new EmptyCan(); 을 사용할 수 있지만
abstract가 선언된 미완성 클래스이기 때문에
EmptyCan can = newBeerCan();으로 적어야 에러가 나지 않는다.
'📒 education archive > 🎀JAVA' 카테고리의 다른 글
자바 공부 기록(9)-쓰레드 (0) | 2021.08.14 |
---|---|
자바 공부 기록(8)-다형성, 인터페이스, 예외처리 (0) | 2021.08.13 |
자바 공부 기록(6)-생성자,캡슐화,접근 제어자 (0) | 2021.08.13 |
자바 공부 기록(5)-기본형 참조형 타입 매개변수,문자열 클래스 (0) | 2021.08.13 |
자바 공부 기록(4)-클래스,객체,선언 위치별 변수 (0) | 2021.08.13 |