Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일기

JAVA 상속 공부 2 (feat.Overriding = 재정의 란??) 본문

JAVA 공부

JAVA 상속 공부 2 (feat.Overriding = 재정의 란??)

개발 일기 2021. 6. 15. 22:50

안녕하세요!

오늘은 상속의 연장선으로 JAVA의 Overriding(재정의)에 대해서 복습해보고 예시 코딩을 해보겠습니다.

오버라이딩(재정의)란???

  1. 상속관계에서 발생하는 메쏘드의 재정의 기법
  2. JAVA의 다형성 기법중의 하나
  3. 부모 클래스에 정의 된 메쏘드의 이름, 리턴타입, 인자가 동일한 메쏘드를 자식 클래스에 정의(재정의)하는 것

즉, 부모 클래스에서 정의 된 부분을 자식 클래스에서 동일하게 사용 하는 기능을 할 수 있다.

예시)

//1. AcademyMember 부모 클래스 생성

public class AcademyMember {
public int no;
public String name;
public AcademyMember() {

}
public AcademyMember(int no, String name) {
    super();
    this.no = no;
    this.name = name;
}
public void print() {
    System.out.print(no+"\t"+name+"\t");
}

}

//2. AcademyMember를 부모 클래스로 상속하는 AcademyStudent 생성

public class AcademyStudent extends AcademyMember {

public String ban; // 반
public AcademyStudent() {

}
public AcademyStudent(int no, String name, String ban) {
    this.no=no;
    this.name=name;
    this.ban=ban;
}
public void print() { // AcademyMember 부모클래스의 print 메소드 재정의
    super.print(); // super(셀프참조변수)를 활용하여 부모클래스(상위클래스) print 메소드를 호출하여 오버라이딩 함
    System.out.println(this.ban);
}

}

//3. 메인 클래스 생성

public class AcademyMemberOverridingMain {

public static void main(String[] args) {
    AcademyStudent st1 = new AcademyStudent(1, "KIM", "LINUX");
    AcademyStudent st2 = new AcademyStudent(2, "WIM", "JAVA");
    AcademyStudent st3 = new AcademyStudent(3, "EIM", "DESIGN");

    System.out.println("--------------Student----------------");
    st1.print();
    st2.print();
    st3.print();
}

}

public void print() {
super.print();
System.out.println(this.ban);

 

이 부분을 보면 super.print(); 라는 명령어를 사용하였는데
super라는 self 참조변수를 활용하여 재정의에 의해 은폐된 메쏘드를 호출합니다.

 

즉, AcademyMember 에서의 print 메소드와 AcademyStudent 에서의 print 메소드가 재정의 됐고
super(self 참조변수)를 사용하여 AcademyMember의 print 메소드를 호출한 것 입니다.

 

AcademyStudent의 객체를 생성하여 메인 메소드에서 print를 실행 할 경우 아래와 같이 출력됩니다.

--------------Student----------------
1 KIM LINUX
2 WIM JAVA
3 EIM DESIGN

 

 

감사합니다.

Comments