[Java] 상속(Inheritance), 포함(composite)

2023. 12. 20. 01:35·Java

상속


: 기존 클래스에서 새 클래스 작성(코드 재작용성)

- 두클래스 부모,자식 관계 맺음 부모로 부터 자식에게 상속

- 부모클래스(super class)의 멤버들을 자식클래스(child class)에서 자기가 선언한 것 처럼 사용하려 하는것

- 클래스간의 공통요소(멤버)가 있다면 공통요소를 부모클래스로 작성 후 자식 클래스가 상속(확장) 해서 사용

- java는 단일 상속만 허용 (충돌방지)

- 자손은 조상의 모든 멤버 상속받음(생성자,초기화 블럭 제외)

- 자손 멤버 수 ≥ 조상 멤버 수 → 조상보다 적을 수x 

- 자손 변경 조상 영향x

class 자식클래스 extends 부모클래스{

}
public class Parent { //멤버수 :2 [x, play()]
	int x = 10;
    
	public void play(){
		System.out.println("히히");
	}
}

public class Child extends Parent{ //멤버수 : 3 [x, play(), y]
	int y = 20;
}

public class Test {
	public static void main(String[] args) {
        Child child = new Child();
        System.out.println(child.x); //10
        System.out.println(child.y); //20
        child.play(); //히히
	}
}

 

 

 

포함


: 클래스멤버로 참조변수 선언하는 것.

- 작은 단위의 클래스 만들고, 이 들을 조합해 클래스 만듦. 

public class TwoDim {
	int x=10;
	int y=20;
}

public class ThreeDim {
	TwoDim twoDim = new TwoDim();
	int z=30;
}

 

 

클래스관계 결정(상속?포함?)


▸상속관계 : ~은 ~이다. (is-a)

▸포함관계 : ~은 ~을 가지고 있다. (has-a)

 

넣어보고 더 어울리는쪽으로

주로 포함관계..꼭필요할때만 상속관계

또는 비중높은 클래스 하나만 상속관계,나머지 포함관계

'Java' 카테고리의 다른 글

[Java] Object 클래스, super, super()  (0) 2023.12.20
[Java] 오버라이딩(OverRiding)  (0) 2023.12.20
[Java] 변수 초기화(명시적, 생성자, 초기화블럭)  (0) 2023.12.18
[Java] this(), this  (0) 2023.12.18
[Java] 생성자(Constructor)  (0) 2023.12.18
'Java' 카테고리의 다른 글
  • [Java] Object 클래스, super, super()
  • [Java] 오버라이딩(OverRiding)
  • [Java] 변수 초기화(명시적, 생성자, 초기화블럭)
  • [Java] this(), this
Naah
Naah
  • Naah
    blueprint
    Naah
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • Java (28)
      • Kotlin (0)
      • TypeScript (7)
      • React (22)
      • Next.js (1)
      • Spring (22)
      • JPA (12)
      • Spring Data JPA (6)
      • Querydsl (1)
      • Error (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • manage
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Naah
[Java] 상속(Inheritance), 포함(composite)
상단으로

티스토리툴바