[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차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."