Beny's Study

08. 접근제한자 ,다른패키지에서 오버라이드 흐름 코드 예제 본문

[JAVA]/08. 상속

08. 접근제한자 ,다른패키지에서 오버라이드 흐름 코드 예제

76beny 2022. 4. 13. 18:31

오버라이드는 접근제한자 별로 오버라이드가 되는 경우가 있고 안되는 경우가 있다.

또한 다른 패키지 내에서도 접근제한자가 오버라이드 되는경우와 안되는경우가 있다.

이를 코드 예제를 통해 확인해보기 위해 차례대로 부모클래스,자식클래스, 다른패키지 클래스를 작성 한 후 

코드의 흐름을 확인 해 보았다 (주석설명)

 

SuperClass

package com.kh.ex03.overriding_test;

public class SuperClass {
	//접근제한자 별로 override실습
	
	private void privateMethod() {
		System.out.println("privateMethod");
	}

	public void publicMethod() {
		System.out.println("publicMethod");
	}
	
	protected void protectedMethod() {
		System.out.println("protectedMethod");
	}
	
	public final void finalMethod() {
		System.out.println("finalMethod");
	}
	
	void defaultMethod() {
		System.out.println("defaultMethod");
	}


}

 

 

 ChildClass

package com.kh.ex03.overriding_test;

public class ChildClass extends SuperClass {
	
//접근제한자 별로 상속 실습
	// 상속하고 오버라이드 단축키 하면 private,final제외한 3가지만 선택할수 있게 뜸
	// private,final은 상속이 불가능!하단에 3개만 오버라이드 된 이유

	@Override
	public void publicMethod() {
		// TODO Auto-generated method stub
		super.publicMethod();
	}

//	@Override
//	protected void protectedMethod() {
//		// TODO Auto-generated method stub
//		super.protectedMethod();
//	}
// 부모의 메소드보다 접근제한자를 더 넓게 설정 가능하다.
// 위의 주석처리한 protected를public으로 변경해도 가능(하단오버라이드가 그 예시 )
	@Override
	public void protectedMethod() {
		// TODO Auto-generated method stub
		super.protectedMethod();
	}

	@Override
	void defaultMethod() {
		// TODO Auto-generated method stub
		super.defaultMethod();
	}// 3껄로 받아오기 super하고 엔터쳐서 패키지3껄로

}

주의: extends하고 스페이스로 상속할 클래스 가져올때 패키지 확인 잘해서 가져와야함,잘못하면 전혀다른게...상속되버림

 

OtherChildClass

package com.kh.ex03.overriding_test2;

import com.kh.ex03.overriding_test.SuperClass;

//다른 패키지에서 오버라이드 해보기! 
public class OtherChildClass extends SuperClass {
//오버라이드 2가지밖에 안됨
	// private안되고 final안되고 + default도 안됨
	// 다른패키지에서 상속하면 default도 안된다~(규칙)

	@Override
	public void publicMethod() { 
		super.publicMethod();
	}

	@Override
	protected void protectedMethod() {
		super.protectedMethod();
	}// 3번째 패키지거 가져옴

}

 

TIP! 어차피 오픈할거면 접근제한자는 왠만하면 public 으로 하자!(protected도 잘 안씀!)

 

 

 

 


"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."

 

'[JAVA] > 08. 상속' 카테고리의 다른 글

10_1. [강의] 상속 기본흐름  (0) 2022.05.28
09. 오버로딩  (0) 2022.04.13
07. 상속의 기본 흐름 코드예시  (0) 2022.04.13
06. final (마지막의,변동될수없는)  (0) 2022.04.13
05. super()와 super.의 차이  (0) 2022.04.13