본문 바로가기

Java/java 기초

객체 오버라이딩 및 상속을 통한 구현

부모클래스 (상속을 위함)

package parent;

public class ParentClass {

	public void ParentMethod() { // Over Ride Method
		System.out.println("ParentClass ParentMethod()");
	}
}

 자식 클래스1

package child;

import parent.ParentClass;

public class JaneClass extends ParentClass {

	@Override
	public void ParentMethod() {

		System.out.println("JaneClass Parent");
	}
	
	public void sayHello() {
		System.out.println("안녕!!");
	}
	
}

자식클래스2

package child;

import parent.ParentClass;

public class TomClass extends ParentClass{
	@Override
	public void ParentMethod() {

		System.out.println("TomClass Parent");
	}
	
	public void func() {
		System.out.println("TomClass func()");
	}
}

메인 클래스 

 

package oop05;

import child.JaneClass;
import child.TomClass;
import parent.ParentClass;

public class mainClass {
	public static void main(String[] args) {
		// Over Ride 목적 : 하나의 instance 형으로 관리가 용이하게
		
		TomClass tc = new TomClass();
		
		JaneClass jc = new JaneClass();
		

		tc.ParentMethod();
		jc.ParentMethod();
		
		ParentClass p1 = new TomClass();
		p1.ParentMethod(); //오버라이딩 된 메소드
		
		//오버라이딩 된 메소드외의 것을 사용하기위해서 형변환을 해야한다.
		TomClass t = (TomClass)p1; //강제 형변환
		t.func();
		
		//위와 같다.
		((TomClass)p1).func();

		ParentClass p2 = new JaneClass();
		p2.ParentMethod();
		
		JaneClass j = (JaneClass)p2;
		
		j.sayHello();		
		
	}
}

 부모 클래스 하나만을 사용해서 상속된 자식들을 한번에 관리할 수 있다(오버라이딩 된 메소드에 한해서만 가능하다)

 

오버라이딩 된 메소드가 아닌 각각의 자식에 따로 선언된 func, sayHello 등의 메소드는 

형변환 ((TomClass)p1).func() 혹은 

JaneClass j = (JanClass)p2;

j.sayHello() 등을 사용해서 형변환을 사용 후 호출 해줘야 한다.

'Java > java 기초' 카테고리의 다른 글

학생관리 프로그램 MVC 패턴으로 나누기  (0) 2019.11.28
final  (0) 2019.11.28
객체지향 프로그래밍 기본 개념  (0) 2019.11.27
파일 쓰기  (0) 2019.11.26
파일 읽기  (0) 2019.11.26