웹개발/Java

[Java] 상속

chuseok 2024. 6. 26. 13:16

uml 다이어그램

: Structure Diagrams, Behavioral Diagrams로 나뉜다.

Structure Diagrams

  • +: public
  • #: protected
    (같은 패키지 또는 자식 클래스에서 사용할 수 있다.)
  • -: private

상속

  • 자바의 클래스 상속은 단일 상속이다.

Employee is a Person
Student is a Person
Account is a Person

  • 상속 예약어는 extends

초기화 순서

  1. 부모 클래스 초기화
    : 자식 클래스가 생성될 때, 먼저 부모 클래스의 생성자가 호출되어 부모 클래스가 초기화된다. 이 과정에서 부모 클래스의 필드나 메서드 초기화가 수행된다.
  2. 자식 클래스 초기화
    : 부모 클래스의 초기화가 완료된 후에 자식 클래스의 생성자가 호출되어 자식 클래스가 초기화된다. 이 과정에서 자식 클래스의 필드나 메서드 초기화가 수행된다.

💁 예시 

class Parent {
    Parent() {
        System.out.println("부모 클래스의 생성자 호출");
    }
}

class Child extends Parent {
    Child() {
        System.out.println("자식 클래스의 생성자 호출");
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
    }
}

관계 성립 조건

  • is a (또는 kind of) 관계가 성립돼야 한다.

Method Overriding

다형성을 통해 실제 객체의 overring된 메서드가 호출된다.

💁 예시 

class Animal {
    void sound() {
        System.out.println("동물 소리");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("멍멍");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.sound(); // 출력: 동물 소리
        
        Dog dog = new Dog();
        dog.sound(); // 출력: 멍멍
        
        //부모 클래스 타입의 변수에 자식 클래스 객체를 할당했다.
        Animal anotherAnimal = new Dog(); // 다형성 예시
        anotherAnimal.sound(); // 출력: 멍멍 (실제로는 Dog의 sound() 메서드가 호출됨)
    }
}

 

'웹개발 > Java' 카테고리의 다른 글

[Java] 멀티 스레드  (0) 2024.07.04
[Java] Class  (0) 2024.06.20