Java/Overriding
메소드 오버라이딩
Bohemian life
2012. 4. 11. 16:44
package com.over;//메서드 오버라이딩 class Parent{ protected void make(){ System.out.println("부모 클래스"); } } class Child extends Parent{ //메소드 오버라이딩(메소드 재정의) 메소드 오버라이딩 규칙 틀은 같으나 내용이 다름 //부모 클래스 메소드의 확장 또는 재정의 protected void make(){ System.out.println("자식 클래스"); } } public class Exten01 { public static void main(String[] args){ Child ch = new Child(); //목적은 재사용 이 아니라 확장, 재정의(리모델링) //메소드 오버라이딩으로 부모 클래스가 호출되지 않고 자식클래스로 바뀜 ch.make(); } }
자식 클래스
package com.over2;//메서드 오버라이딩 기본2 class Parent{ String msg = "Parent 클래스"; public String getMsg(){ return msg; } } class Child extends Parent{ String str = "Child 클래스"; //메소드 오버라이딩(재정의) -> 확장, 재정의(변형) public String getMsg(){ return str; } } public class Exten01 { public static void main(String[] args){ Child ch = new Child(); System.out.println(ch.getMsg()); } }
Child 클래스
package com.over;//메서드 오버라이딩 class Parent{ String msg = "겨울"; protected void make(){ System.out.println("부모 클래스"); } } class Child extends Parent{ //메소드 오버라이딩(메소드 재정의) 메소드 오버라이딩 규칙 틀은 같으나 내용이 다름 //부모 클래스 메소드의 확장 또는 재정의 //부모 클래스와 자식 클래스의 멤버변수명을 동일하게 //할경우는 자식클래스의 멤버변수가 호출됨 //단지 변수명이 같아서 자식 클래스 쪽 멤버변수가 //(호출되는 것이지 특별한 문법 사항이 있는것은 아님) String msg = "봄"; //이건 오버라이딩 문법이 아님 메소드에만 있다 protected void make(){ System.out.println("자식 클래스"); } } public class Exten01 { public static void main(String[] args){ Child ch = new Child(); //메소드 오버라이딩으로 부모 클래스가 호출되지 않고 자식클래스로 바뀜 //목적은 재사용 이 아니라 확장, 재정의(리모델링) ch.make(); System.out.println(ch.msg); } }
자식 클래스
봄