Java/Java 기초
자바의 꽃 상속과 오버라이딩
낙락장송s
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() 메서드 |
추천은 블로거에게 큰 힘이 됩니다.