티스토리 뷰

0. 상속

- Inheritance

:: 기존 클래스의 속성과 동작을 새로운 클래스에서 재사용

:: 부모 클래스의 필드와 메서드를 자식 클래스가 물려받음

  • 예제
더보기
// 부모 클래스
class Animal {
    String name;

    void eat() {
        System.out.println(name + "가 먹는 중입니다.");
    }
}

// 자식 클래스
class Dog extends Animal {
    void bark() {
        System.out.println(name + "가 멍멍 짖습니다!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.name = "뽀삐";  // 부모 클래스의 필드 사용
        myDog.eat();        // 부모 클래스의 메서드 사용
        myDog.bark();       // 자식 클래스의 메서드 사용
    }
}

 

실행 결과

뽀삐가 먹는 중입니다.
뽀삐가 멍멍 짖습니다!

0.1 메서드 오버라이딩

- Method Overriding

:: 부모 클래스의 메서드를 자식 클래스에서 재정의

:: 해당 메서드를 수정 및 확장 가능

:: @Overriding 어노테이션으로 명시하는 게 좋음

  • 예제
더보기
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 myDog = new Dog();
        myDog.sound();  // 오버라이딩된 메서드 호출
    }
}

 

실행결과

멍멍!

1. 다형성

- Polymorphism

:: 하나의 객체가 여러 타입으로 동작할 수 있는 특성

  • (부모) 클래스를 통한 클래스의 다형성을 추구
  • 추상-구현체를 통한 인터페이스로 다형성을 추구
  • 런타임 다형성과 컴파일 다형성으로 구분
더보기

1. 런타임 다형성

:: 메서드 "Overrid"

:: 런타임에서 호출 당시 객체가 무엇인지에 따라 호출할 메서드를 결정

 

2. 컴파일 타임 다형성

:: 메서드 "Overload"

:: 파라미터가 무엇인지에 따라 호출할 메서드 결정

  • 예제
더보기
class Animal {
    void sound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

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

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("야옹!");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();  // 부모 타입으로 자식 객체 참조
        Animal myCat = new Cat();  // 부모 타입으로 자식 객체 참조

        myDog.sound();  // 멍멍!
        myCat.sound();  // 야옹!
    }
}

 

실행결과

멍멍!
야옹!

1.1 instanceof 연산자

:: 객체가 특정 클래스의 인스턴스인지 확인

:: 다형성 사용 시, 유용

  • 예제 코드
더보기
public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        if (myDog instanceof Dog) {
            System.out.println("myDog는 Dog의 인스턴스입니다.");
        }

        if (myCat instanceof Cat) {
            System.out.println("myCat는 Cat의 인스턴스입니다.");
        }
    }
}

 

실행결과

myDog는 Dog의 인스턴스입니다.
myCat는 Cat의 인스턴스입니다.

 

 


참고

ASAC 수업자료

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함