상속
📌상속
: 부모 클래스의 속성을 자식 클래스가 물려 받는 것.
extends
📌 상속은 연관된 클래스들에 대한 공통적인 규약을 정의할 수 있음.
📌 상위 클래스, 기초 클래스, 부모 클래스
하위 클래스, 유도 클래스, 자식 클래스
📌 하위 클래스의 인스턴스 생성 시 상위 클래스, 하위 클래스의 생성자가 모두 호출되며,
상위 클래스의 생성자가 먼저 호출됨.
📌 super()
: 상위 클래스 생성자 호출.
하위 클래스 생성자의 가장 위에 등장해 가장 먼서 실행되어야 함.
📌 상위 클래스 생성자를 호출하지 않으며, 인자가 없는 상위 클래스 생성자가 자동으로 호출됨.
📌 자바는 단일 상속만 지원함.
📌 상위 클래스에 위치한 클래스 변수와 메소드를 하위 클래스에서도 접근 가능.
(단, 접근 수준 지시자가 접근을 허용할 때.)
📌 모든 클래스는 Object 클래스를 상속함.
📌 instanceof
: 상속하는 클래스를 묻는 연산자.
if(c1 instanceof c2) {
c1이 참조하는 인스턴스가 c2의 인스턴스이거나 c2를 상속하는 클래스의 인스턴스면 true.
}
else {
아니면 false
}
📌 final
: 다른 클래스가 상속하지 못하게 함.
메소드에 추가하면, 해당 메소드의 오버라이딩을 허용하지 않음.
📌 어노테이션(Annotations)
: 자바 컴파일러에게 메시지를 전달하는 목적의 메모.
컴파일 과정에서 확인되지 않는 오류가 발생하는 것을 차단함.
📌 @override
: 상위 클래스의 메소드를 오버라이딩할 거라고 컴파일러에게 알려주는 어노테이션(Annotations).
📄 Person과 Student의 정보 입력하고 출력하는 프로그램.
📄 Person.java
package extend;
public class Person {
protected static int count = 0; // proteceted : 하위 클래스가 접근 가능.
protected String name;
protected int id;
public Person() { // 디폴트 생성자.
name = "None";
id = -1;
count++;
}
public Person(String name, int id) { // 생성자.
this.name = name;
this.id = id;
count++;
}
public void printCount() {
System.out.println(count);
}
public void printInfo() {
System.out.println(name + "\t" + id);
}
}
📄 Student.java
package extend;
public class Student extends Person {
private int classNum;
private String subject;
public Student(int classNum, String subject) {
super(); // 상위 클래스 디폴트 생성자 호출.
this.classNum = classNum;
this.subject = subject;
}
public Student(String name, int id, int classNum, String subject) {
super(name, id); // 상위 클래스 생성자 호출.
this.classNum = classNum;
this.subject = subject;
}
public void printInfo() {
System.out.println(name + "\t" + id + "\t" + classNum + "\t" + subject);
}
}
📄 PersonMain.java
package extend;
public class PersonMain {
public static void main(String[] args) {
Person p1 = new Person("jin", 1204);
Person p2 = new Person("jimin", 1013);
p1.printInfo();
p1.printCount();
p2.printInfo();
p2.printCount();
Student s1 = new Student("hani", 1004, 17, "math");
Student s2 = new Student(5, "kor");
s1.printInfo();
s1.printCount();
s2.printInfo();
s2.printCount();
}
}
// jin 1204
// 2
// jimin 1013
// 2
// hani 1004 17 math
// 4
// None -1 5 kor
// 4
'Java > Java' 카테고리의 다른 글
[Java] 템플릿 메서드 (0) | 2022.10.15 |
---|---|
[Java] 추상 클래스(Abstract Class) (0) | 2022.10.15 |
[Java] ArrayList (0) | 2022.10.14 |
[Java] 배열(Array) (0) | 2022.10.14 |
[Java] 콘솔 입출력 (0) | 2022.10.14 |
댓글