JAVA/java 공부

[JAVA] 다형성 (객체지향프로그램 특징)

congs 2023. 3. 26. 01:16

다형성(Polymorphism)

: 객체 지향 프로그래밍에서 매우 중요한 개념 중 하나

  ⇒ 자바에서는 메소드 오버로딩(Overloading) /  메소드 오버라이딩(Overriding)을 통해 다형성을 구현

 

메소드 오버로딩(Overloading)

 : 같은 이름의 메소드를 매개변수의 타입, 개수, 순서 등을 다르게하여 여러 개 만드는 것.

    = 즉, 같은 이름의 메소드가 서로 다른 동작을 하게 됩니다.

public class OverloadingExample {
    public int add(int x, int y) {
        return x + y;
    }
    public int add(int x, int y, int z) {
        return x + y + z;
    }
    public double add(double x, double y) {
        return x + y;
    }
}

 

메소드 오버라이딩(Overriding)

 : 부모 클래스에 있는 메소드를 자식 클래스에서 재정의하는 것

    ⇒ 단! 부모 클래스의 메소드와 같은 이름, 매개변수, 반환 타입을 가지고 있어야 함.

public class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound.");
    }
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog is barking.");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat is meowing.");
    }
}

    →  Animal 클래스를 상속받은 Dog와 Cat 클래스에서 makeSound 메소드를 오버라이딩하여 각자 다른 동작 실행

 

다형성의 장점

  • 코드의 재사용성과 유지보수성을 높일 수 있다.
  • 다형성을 이용하면 프로그램의 확장성을 높일 수 있다.