1. 상속(Inheritance)
- 자식 클래스는 부모 클래스의 모든 속성을 상속 받고 사용 가능하다.
- 상속 받은 메소드는 필요에 따라 자식 클래스에서 따로 재정의 할 수 있다. (메소드 오버라이딩)
- 자식 클래스 정의 방식은 '자식클래스이름 extends 부모클래스'로 정의한다.
- 자식 클래스 호출시 부모 클래스도 함께 호출 된다.
- 자식 클래스의 경우 우리 눈에는 안 보이지만 상속 받은 코드가 숨어있다고 생각하면 된다.
2. 메소드 오버라이딩(Method Overriding)
부모 클래스의 메소드에 약간의 기능을 추가한 자식 클래스의 메소드를 만들 경우,
새로운 메소드를 만들지 않고 상속받은 함수를 재활용하여 코드를 작성할 수 있다.
이를 오버라이딩이라고 한다.
- 오버라이딩: 부모 클래스에서 상속받은 메소드를 재정의하는 것
3. super 키워드
- super는 자신이 상속받은 부모 클래스에 대한 레퍼런스 변수로, 부모 클래스의 멤버에 접근할 때 사용한다.
- super() 는 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하기 위해서 사용된다.
4. 샘플 코드
// 부모 클래스
package model;
public class Person {
int num;
String name;
String dept;
String address;
public Person(){
}
public Person(int num, String name, String dept, String address){
this.num = num;
this.name = name;
this.dept = dept;
this.address = address;
}
public void print() {
System.out.println(num);
System.out.println(name);
System.out.println(dept);
System.out.println(address);
}
}
// 자식 클래스
package model;
// Professor 클래스는 Person 클래스를 상속한다.
public class Professor extends Person{
// int num;
// String name;
// String dept;
// String address;
String[] subjects;
public Professor(){
}
public Professor(int num, String name, String dept,
String address, String[] subjects) {
// 수퍼클래스의 생성자 호출하는 코드.
super(num, name, dept, address);
this.subjects = subjects;
}
// 오버라이딩
// Person의 print메소드에 추가로 subjects까지 출력하는 메소드
@Override
public void print() {
super.print();
for (int i = 0; i < subjects.length; i++) {
System.out.println(subjects[i]);
}
}
// 메인 클래스
package main;
import model.Professor;
public class EduMain {
public static void main(String[] args) {
Professor pf1 = new Professor(1, "김나나", "컴공과", "서울시 마포구",
new String[] {"자바", "파이썬"});
pf1.print();
}
}
'Java' 카테고리의 다른 글
Java - 추상 클래스 (Abstract Class) (0) | 2023.01.20 |
---|---|
Java - 변수의 종류와 메모리 구조 (0) | 2023.01.20 |
Java - 접근제어자와 getter/setter, 캡슐화 (0) | 2023.01.19 |
Java - this 키워드 (0) | 2023.01.19 |
Java - 생성자(Constructor) (0) | 2023.01.19 |