■ Java Inheritance (상속)
- 클래스를 상속하게 되면 모든 멤버변수 및 메소드를 계승하여, 새로운 클래스를 생성하는 것
- 상속할 대상 : 추상 클래스, 부모 클래스, 상위 클래스, 슈퍼 클래스
- 상속 결과 : 자손 클래스, 자식 클래스, 하위 클래스, 서브 클래스
- 상속 관계를 흔히 'IS-A' 관계라고 부른다.
- extends 키워드를 사용
// 부모 클래스
class Person{
...
}
// 자식 클래스{
class Developer extends Person{
...
}
• 포함 관계 (Class Composition)
- 'HAS-A' 관계
- 하나의 클래스가 다른 클래스의 객체를 보유하는 관계
class MainMachine{
...
}
class Developer{
MainMachine mainMachine;
Developer(MainMachine mainMachine){
this.mainMachine = mainMachine
}
}
• 메소드 재정의 (Method Override)
- Override -> 덮어 씌운다, 해킹해서 뭔가 달라지게 하다.
- 다형성(Polymorphism)의 근간이 된다.
- 어노테이션 @Override를 관례적으로 붙여준다(문법적 체크 및 가독성을 위해서)
class Person{
public void writeCode() {
System.out.println("아무 코드나 일단 적어 보았다.");
}
}
class Student extends Person{
@Override
public void writeCode() {
System.out.println("능숙하게 코드를 작성해 보았다.");
System.out.println("답은 틀렸다.");
System.out.println("하지만 무언가 또 배웠다.");
}
}
class Developer extends Person{
@Override
public void writeCode() {
System.out.println("능숙하게 코드를 작성했다.");
}
}
• 다형성 (Polymorphism)
- Method Override를 이용하여 하나의 클래스로 여러 동작을 표현할 수 있게 한다.
public class MethodOverride {
public static void main(String[] args) {
Student stud = new Student();
Developer dev = new Developer();
// 부모 클래스 자료형으로 자식 클래스를 받을 수 있다.
Person p = (Person)dev;
// Developer의 writeCode() 실행, 부모 클래스 자료형이지만 오버라이드된 메소드가 동작한다.
p.writeCode();
// Student의 writeCode() 실행
p = (Person)stud;
p.writeCode();
}
}
• super 키워드
- this 키워드가 자기 자신의 객체를 참조하듯, super 키워드는 부모 객체를 참조한다.
- super 키워드를 이용하여 부모 클래스 생서자를 호출할 수 있다.
class Foo{
int x;
Foo(int x){
this.x = x;
}
}
class Bar extends Foo{
int y;
Bar(int x, int y){
super(x); //super 생성자는 첫 줄에만 올 수 있다
this.y = y;
}
}
'Coding > Java' 카테고리의 다른 글
Java Polymorphism(다형성) (0) | 2020.09.17 |
---|---|
Java Modifier(제어자) (0) | 2020.09.16 |
JavaDoc 만드는 방법 (0) | 2020.09.16 |
Java Class(클래스) (0) | 2020.09.16 |
Java String(문자열) (0) | 2020.09.16 |