개발 일기
JAVA 상속 공부 2 (feat.Overriding = 재정의 란??) 본문
안녕하세요!
오늘은 상속의 연장선으로 JAVA의 Overriding(재정의)에 대해서 복습해보고 예시 코딩을 해보겠습니다.
오버라이딩(재정의)란???
- 상속관계에서 발생하는 메쏘드의 재정의 기법
- JAVA의 다형성 기법중의 하나
- 부모 클래스에 정의 된 메쏘드의 이름, 리턴타입, 인자가 동일한 메쏘드를 자식 클래스에 정의(재정의)하는 것
즉, 부모 클래스에서 정의 된 부분을 자식 클래스에서 동일하게 사용 하는 기능을 할 수 있다.
예시)
//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
감사합니다.
'JAVA 공부' 카테고리의 다른 글
JAVA 상속 공부 4 (feat. 추상클래스 abstract - 제한자) (2) | 2021.06.17 |
---|---|
JAVA 상속 공부 3 (feat. 객체형변환) (0) | 2021.06.16 |
JAVA 상속(extends)에 대한 복습! (0) | 2021.06.14 |
객체 지향 프로그래밍(Object Oriented Programming_OOP)이란??? (0) | 2021.06.04 |
JAVA 변수의 타입 개념, 인코딩과 디코딩, 연산자(Operator)란? (0) | 2021.06.01 |