Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

codingfarm

상속(inheritance) 본문

Programming Language/JAVA

상속(inheritance)

scarecrow1992 2021. 1. 7. 20:10

상속(inheritance)

상속 : 기존의클래스를 재사용하여 새로운 클래스를 작성하는것

 

class Parent {
	int age;
}
class Child extends Parent {
	void play(){
		System.out.println("hello");
    }
}

Child 클래스는 자동적으로 age라는 멤버변수가 추가된 것과 같은 효과를 얻는다.

Play 함수는 Child 클래스 내에서만 독자적으로 사용할 수 있다.

Parent와 Child 클래스를 상속관계도와 다이어그램으로 표현하면 아래와 같다.

생성자와 초기화 블럭은 상속되지 않는다. 멤버(필드, 메서드)만 상속된다.

 

접근제어자가 private또는 default인 멤버들은 상속되지 않는다기보다는 상속은 받지만 자손 클래스로부터의 접근이 제한된다. 가령, 자식 클래스의 메서드에서는 부모 클래스의 private 필드나 메서드에 접근가능하다.

 


포함(Composite)

클래스의 멤버변수로 다른 클래스를 선언하는 방식의 클래스간 관계 구현법이다.

1
2
3
4
5
class Circle{
    int x;        // 원점의 x좌표
    int y;        // 원점의 y좌표
    int r;        // 반지름
}
cs

좌표상의 한점을 다루기 위해 Point 클래스를 작성한 후 이를 통해 Circle 클래스를 아래처럼 재사용 할 수 있다.

1
2
3
4
5
6
7
8
9
class Point {
    int x;        // x좌표
    int y;        // y좌표
}
 
class Circle{
    Point c = new Point();    //원점
    int r;                    // 반지름
}
cs

 

이런 방법을 통해 다양한 클래스들의 조합을 통해 한 클래스를 표현하는것도 용이하다.

1
2
3
4
5
class Car{
    Engine e = new Engine();
    Door[] d = new Door[4];
    /*...*/
}
cs

 


단일상속(single inheritance)

C++에서는 여러 클래스로부터 상속받는 다중상속(multiple inheritance)를 허용하지만 자바에서는 단일 상속만을 허용한다.

 

 

 

 

 

 

 

 

 

'Programming Language > JAVA' 카테고리의 다른 글

super  (0) 2021.01.07
오버라이딩(overriding)  (0) 2021.01.07
변수  (0) 2020.11.02
객체지향 프로그래밍  (0) 2020.11.01
배열(Array)  (0) 2020.11.01
Comments