티스토리 뷰
반응형
상속
객체 지향 언어에서 상속이란 상위 클래스에 존재하는 멤버를 하위 클래스로 그대로 물려 받는 것을 의미합니다. 물려 받는다는 개념보다는 재사용 + 확장의 의미로 생각하는게 더 편할 수 있습니다. 상속은 다음과 같은 특징을 가집니다.
●하위 클래스에서 상위 클래스를 상속받고자 한다면 클래스 정의 후 extends 사용
●하위 클래스는 여러 개의 상위 클래스를 상속 받을 수 없음 (다중 상속 허용 X)
●하위 클래스는 상위 클래스의 내용을 재사용이 가능하고 내용을 확장 시킬 수있음
●상위 클래스는 여러개의 하위 클래스를 가질 수 있음
●상위 클래스와 하위 클래스에 같은 이름의 멤버 변수나 메서드가 존재 할 경우 상위 클래스의 내용은 감춰 짐
실제 예제를 통해서 구체적으로 살펴 보겠습니다.
예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
package study;
public class HighRankClass {
public int num =10 ;
public static String st ="Static!!";
public void show()
{
System.out.println("하위 클래스에서 재사용가능");
}
public void show2()
{
System.out.println("상위 클래스 내용");
}
}
|
상위 클래스에 해당하는 HighRankClass.class 입니다.
num 변수와 st변수 그리고 show() 메서드는 하위에서 재사용되는 멤버입니다.
show2()는 하위 클래스에서 동일한 이름으로 구현 될 메서드로 하위 클래스에
의해 가려지게 되는 것을 보여주기 위한 메서드 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
package study;
public class LowRankClass1 extends HighRankClass {
public void show2()
{
System.out.println("하위클래스1의 내용");
}
public void show3()
{
System.out.println("class1의 확장된 내용입니다");
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
package study;
public class LowRankClass2 extends HighRankClass{
public void show2()
{
System.out.println("하위 클래스2의 내용");
}
public void show3()
{
System.out.println("class2의 확장된 내용입니다");
}
}
|
HighRankClass를 상속받는 하위 클래스인 클래스들입니다.
[extends 클래스명]을 통해 HighRankClass를 상속 받습니다.
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
31 |
package study;
public class Main {
public static void main(String argsp[])
{
LowRankClass1 class1 = new LowRankClass1();
LowRankClass2 class2 = new LowRankClass2();
//재사용
class1.show();
class2.show();
System.out.println(class1.num);
System.out.println(class2.num);
System.out.println(class1.st);
System.out.println(class2.st);
//상위 클래스 내용 가려짐
class1.show2();
class2.show2();
//확장
class1.show3();
class2.show3();
}
}
|
main 영역 입니다.
21~22Line의 결과를 보면 동일한 이름의 메서드에 대해서 상위 클래스의 내용이
아닌 하위 클래스의 내용이 출력 되는 것을 확인 할 수 있습니다.
반응형
'Programming > JAVA' 카테고리의 다른 글
06 [객체 지향 언어의 이해] 자바가 확장한 객체지향 - Abstract & 생성자 (0) | 2017.09.13 |
---|---|
05 [객체 지향 언어의 이해] 객체 지향의 4대 특성 04 - 다형성과 캡슐화 (0) | 2017.09.12 |
03 [객체 지향 언어의 이해] 객체 지향의 4대 특성 - 02 추상화와 메모리 (0) | 2017.09.09 |
02 [객체 지향 언어의 이해] 객체 지향의 4대 특성 - 01 추상화 (0) | 2017.09.07 |
자바 (JAVA) getter/setter 메서드 (0) | 2017.09.02 |