-
자바의 꽃 상속과 오버라이딩Java/Java 기초 2012. 6. 24. 00:21
이번엔 상속에 대해 알아보겠습니다.
(어제 노느라 포스팅 못했습니다. 죄송합니다ㅠ)상속이란?
오버로딩이랑 비슷한 개념입니다. 말 그대로 상속한다는 건데 앞에 있는 클래스의 객체를 상속받아 그대로 사용한다는 것입니다. 물론 틀만 사용하는 것이지요. 상속은 간단합니다. 그리고 상속은 여러가지의 특성이 있는데 한가지 알아보겠습니다.
01 class A1{
02 int first; // first라는 변수를 생성합니다.
03 }
04 class A2 extends A1{ // 클래스 A2를 생성하고 A1을 상속받기 위해 extends A1를 적습니다.
05 double first; // 여기서 중요한데 이 때 클래스 A1의 객체 first는 묻힙니다.
06 }
07 public class Inh {
08 public static void main(String args[]){
09 A2 a2 = new A2();
10 a2.first = 10.0;
11 System.out.println("a2에 저장되어 있는 first 값 : " +a2.first); //여기서 결과값이 10.0이 나옵니다.
12 A1 a1 = new A1();
13 a1.first=10;
14 System.out.println("a1에 저장되어 있는 first 값 : " +a1.first); //여기서 결과값이 10이 나옵니다.
15 }
16 }
결과
a2에 저장되어 있는 first값 : 10.0
a1에 저장되어 있는 first값 : 10
이런식으로 클래스를 상속 받은 후에 이름이 같은 변수를 생성할 경우 상위클래스의 객체는 묻힙니다. 이 것이 바로 오버라이딩입니다.
오버라이딩이란?
상속 클래스와 피상속 클래스간에 같은 이름의 메소드를 정의하는 것을 말합니다. 그런데 만약 자신이 상위 클래스의 객체도 표현하고 싶다면 하위 클래스 메서드에 super를 붙여주면 됩니다. 예제를 보겠습니다.
01 class displ1{
02 void display(){
03 System.out.println("상위클래스의 display() 메서드");
04 }
05 }
06 class displ2 extends displ1{ //displ1 클래스를 상속합니다.
07 void display(){ // 상위 클래스와 동일한 메서드를 만들어 오버라이딩합니다.
08 System.out.println("하위클래스의 display() 메서드");
09 }
10 void view() {
11 display();
12 super.display(); //여기서 super를 붙입니다. 이 때 상위 클래스의 메서드가 결과값에 보여집니다.
13 }
14 }
15 public class Oversuper {
16 public static void main(String args[])
17 {
18 displ2 dis = new displ2();
19 dis.view();
20 }
21 }
결과
하위클래스의 display() 메서드
상위클래스의 display() 메서드
추천은 블로거에게 큰 힘이 됩니다.'Java > Java 기초' 카테고리의 다른 글
자바 스레드 (0) 2012.07.13 자바 추상 클래스 (0) 2012.06.30 Java 멤버변수 (0) 2012.06.21 Java 클래스 오버로딩 (0) 2012.06.21 Java 3차 배열 (0) 2012.06.21