note

메소드 오버라이딩 본문

자바/오버라이딩

메소드 오버라이딩

투한 2011. 12. 20. 14:26
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);
	}
}

자식 클래스