본문 바로가기

소프트웨어/Android/Java/Ndk

Java] super class와 sub class의 overriding

 

public class parents {
 public parents(){
  System.out.println("슈퍼클래스꺼임");
 }
 public void parentsPrint(){
  System.out.println("super의 print함수입니다");
 }
}
 

 

public class childrens extends parents{

 public childrens(){
  System.out.println("서브클래스꺼");
 }
 public void parentsPrint(){//오버라이딩
  super.parentsPrint();// 이 문장을 추가시 super class의 함수 호출
  //호출후 추가 명령인 아래의 print를 출력
  System.out.println("childrens가 overriding한 parents생성자");
 }
 public void childrensPrint(){
  System.out.println("서브클래스의 print함수");
 }
 
 
}
 

 

public class main {

 public static void main(String[] args) {
  childrens chil = new childrens();
  chil.parentsPrint();

 

super.parentsPrint();를 childeren의 overiding에 포함시켰을때의 출력값 

 super.parentsPrint();를 childeren의 overriding에서 주석처리했을때의 출력값

 슈퍼클래스꺼임
서브클래스꺼
super의 print함수입니다 //overiding을 시도 했음에도 super라는 명령어로 부모class를 먼저 호출 했기 때문에 출력값에 포함되게 된다.
childrens가 overriding한 parents생성자
슈퍼클래스꺼임
super의 print함수입니다

 슈퍼클래스꺼임
서브클래스꺼
childrens가 overriding한 parents생성자
슈퍼클래스꺼임
super의 print함수입니다

//overiding되어서 super의 값은 은닉 되었다


  
  parents pa = new parents();
  pa.parentsPrint(); // 슈퍼 객체 생성시 overrriding안된 결과물 출력
  
  
 }

}