01. 상속(Inherit)& 포함
목차
- 상속
-상속의 문법
-상속의 목적
-상속의 장단점
-상속의 특징
-포함
상속
■ 기존의 클래스를 재사용해서 새로운 클래스 작성
■ 적은양의 클래스로 새로운 클래스 작성, 두 클래스를 부모와 자식관계로!
■ 코드의 추가 및 변경이 매우 용이
■ 코드의 재사용성↑,중복제거,프로그램의 생산성,유지보수 기여
*java에서는 단일상속만 허용함
* 비중높은 클래스 하나만 상속관계, 나머지는 포함관계
상속 문법(표현방법)
클래스간의 상속시에는 extends 키워드 사용함
[접근제한자] class (자손)클래스명 extends (부모)클래스명 {}
public class Academy extends Company {}
코드설명
package com.kh.ex01.basic_inherit;
//상속의 기본
import java.util.Date;
public class BasicInherit extends Object{// extends: Object(부모)클래스를 BasicInherit(자식)에상속한다
//현재까지 모든 코드는 Object를 상속받은 클래스이며, Object 상속은 생략가능한 문법==Object는 디폴트값
public static void main(String[] args) {
//상속의 디폴트 ,젤중요!!
Object obj1 = new Object();//디폴트값
Object obj2 = new String("안녕?");//문자열 형
Object obj3 = new Date();//date형 ->import생성
Object obj4 = new BasicInherit();//자식클래스
//class의 이름을 출력하는 방법
System.out.println(obj1.getClass().getName());//java.lang.Object 출력
System.out.println(obj2.getClass().getName());//java.lang.String 출력
System.out.println(obj3.getClass().getName());//java.util.Date 출력
System.out.println(obj4.getClass().getName());//com.kh.ex01.basic_inherit.BasicInherit출력
//class의 조상을 알아보는 방법
System.out.println(obj1.getClass().getSuperclass());//null출력, 부모가 없음 왜냐? 본인이 시조니까!(디폴트값)
System.out.println(obj2.getClass().getSuperclass());//나머지는 오브젝트 상속받아서 사용되기때문에 출력가능
System.out.println(obj3.getClass().getSuperclass());
System.out.println(obj4.getClass().getSuperclass());//2,3,4,번째 전부 class java.lang.Object 출력됨.
}
}
상속의 장단점
[장점]
■ 보다 적은양의 코드로 새로운 클래스 작성가능
■ 코드를 공통적으로 관리하기 때문에 코드의 추가 및 변경 용이
■ 코드의 중복을 제거하여 프로그램의 생산성, 유지보수에 크게 기여함
[단점]
■ 복잡성이 증가해서 요즘엔 사용율이 떨어짐
상속의 특징
1. 모든 클래스는 Object클래스의 후손
Object클래스가 제공하는 메소드를 오버라이딩하여 메소드 재구현 가능
ex) java.lang.String 클래스의 equals()와 toString()
2. 부모클래스의 생성자, 초기화 블록은 상속 안 됨
자식 클래스 생성 시, 부모 클래스 생성자가 먼저 실행
자식 클래스 생성자 안에 부모 클래스 생성자를 호출하고 싶으면 super() 활용
3. 부모의 private멤버는 상속은 되지만 직접 접근 불가
자식 객체 생성 시에 부모의 필드 값도 전달 받은 경우,
자식 생성자 안에서 부모의 private 필드에 직접 접근하여 대입 불가
super() 이용하여 전달받은 부모 필드 값을 부모 생성자 쪽으로 넘겨 생성하거나
setter, getter 메소드를 이용하여 접근
즉!
-자손클래스는 조상클래스의 모든 멤버를 상속받음(선택의여지가 없음)
단, 생성자와 초기화블럭은 상속되지않는다.
-자손클래스의 멤버개수는 조상클래스보다 항상 같거나 많다
Is a 상속
■ 뜻 : A는 B다 라는 뜻( 속해져 있다~)
■ 예시 : 학생은 사람이다, 사과는 과일이다, 토끼는 동물이다
■ 즉, 역으로는 성립되지 않음.
Has a (포함관계)
■ A는B를 포함한다 라는 뜻( 포함하고 있다~)
■ 예시 : 교실엔 책상이 있다, 숲엔 나무가 있다, 사람이 폰을 가지고 있다.
■ 포함되는 class 의 객체를 멤버변수로 선언.
* 클래스 간의 포함관계란?
-한 클래스의 멤버변수로 다른 클래스타입의 참조변수선언,
-작은단위의 클래스 생성 후 -> 하나의 커다란 클래스 생성
"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.
이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."