본문 바로가기
Spring과 진짜 초면인 우리들에게

객체지향의 특징 4가지 - 다형성

by eddy0223 2023. 3. 28.
Spring과 진짜 초면인 우리

 

 

1️⃣ 캡슐화 2️⃣추상화 3️⃣ 다형성 4️⃣ 상속성


3️⃣ 다형성

 

다형성이란?  

- 같은 이름의 메서드나 연산자가 다른 동작을 하는 것

- 다형성을 통해 객체지향 프로그래밍에서 코드의 재사용성과 유연성을 높일 수 있다

 

아래 코드에서 'Language' 클래스는 'sayHello()' 메서드를 가지고 있고,

이 클래스를 상속한 'English', 'Chiness', 'Japanse' 클래스에서는 'sayHello()' 메서드를 오버라이드 하여 다른 동작을 수행하게 된다.

이때, 'Language'타입의 변수 'lang1', 'lang2', 'lang3' 을 생성하고,

각각을 'English', 'Chiness', 'Japanse' 클래스의 인스턴스로 초기화하여 'sayHello()' 메서드를 호출하면,

 

동일한 메서드를 호출하더라도 오버라이드된 메서드에 따라 다른 동작을 수행하게 된다.  

class Language {
    public void sayHello() {
        System.out.println("안녕하시오!");
    }
}

class English extends Language {
    public void sayHello() {
        System.out.println("Hello!");
    }
}

class Chinese extends Language {
    public void sayHello() {
        System.out.println("你好!");
    }
}

class Japanese extends Language {
    public void sayHello() {
        System.out.println("こんにちは!");
    }
}

public class Main {
    public static void main(String[] args) {
        Language lang1 = new English();
        Language lang2 = new Chinese();
        Language lang3 = new Japanese();

        lang1.sayHello(); // 출력: Hello!
        lang2.sayHello(); // 출력: 你好!
        lang3.sayHello(); // 출력: こんにちは!
    }
}