프로그래밍언어/JAVA

[JAVA] 다형성 간단한 예제 및 설명

shoney9254 2023. 3. 3. 00:22
반응형

Java에서 다형성이란

Java에서 다형성(Polymorphism)은 객체지향 프로그래밍(OOP)의 중요한 원칙 중 하나입니다. 다형성은 하나의 객체가 여러 가지 타입을 가질 수 있음을 의미합니다.

다형성은 다음과 같은 형태로 구현됩니다.

1. 오버로딩(Overloading)

오버로딩은 같은 이름의 메소드가 매개변수의 타입, 개수, 순서 등의 차이로 인해 다른 동작을 수행할 수 있도록 하는 것입니다.

public class Example {

    public int add(int a, int b) {
        return a + b;
    }

    public int add(int a, int b, int c) {
        return a + b + c;
    }

}

2. 오버라이딩(Overriding)

오버라이딩은 부모 클래스에서 정의된 메소드를 자식 클래스에서 재정의하여 사용하는 것입니다. 이 때 자식 클래스에서 재정의한 메소드는 부모 클래스에서 정의된 메소드의 이름, 매개변수, 반환값 등이 모두 같아야 합니다.

public class Animal {

    public void makeSound() {
        System.out.println("동물이 소리를 냅니다.");
    }

}

public class Dog extends Animal {

    @Override
    public void makeSound() {
        System.out.println("멍멍!");
    }

}

3. 다형적 변수(Polymorphic Variables)

다형적 변수는 부모 클래스 타입의 변수에 자식 클래스 객체를 대입할 수 있는 것을 의미합니다. 이 때 변수가 실제로 참조하는 객체의 타입에 따라 메소드 호출 시 동적 바인딩이 이루어져 적절한 메소드가 호출됩니다.

public class Animal {

    public void makeSound() {
        System.out.println("동물이 소리를 냅니다.");
    }

}

public class Dog extends Animal {

    @Override
    public void makeSound() {
        System.out.println("멍멍!");
    }

}

public class Cat extends Animal {

    @Override
    public void makeSound() {
        System.out.println("야옹!");
    }

}

public class Example {

    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();

        animal1.makeSound(); // "멍멍!" 출력
        animal2.makeSound(); // "야옹!" 출력
    }

}

Java에서 다형성은 코드의 재사용성과 유연성을 높여주는 중요한 개념입니다.

반응형