개발 문서/Java
다형성과 상속: 자바의 중요한 개념
copg
2023. 11. 11. 02:50
728x90
반응형
다형성(Polymorphism)과 상속(Inheritance)은 객체지향 프로그래밍의 핵심 개념 중 두 가지로, 자바에서 강력하게 지원되고 활용되는 개념입니다.
1. 다형성 (Polymorphism):
다형성은 같은 이름의 메소드나 연산자가 다양한 상황에서 다르게 동작하는 능력을 의미합니다. 자바에서 다형성은 주로 오버로딩과 오버라이딩을 통해 구현됩니다.
- 메소드 오버로딩 (Method Overloading):
- 동일한 메소드 이름을 가지지만 매개변수의 타입, 개수, 순서가 다른 여러 메소드를 정의하는 것입니다.
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
- 메소드 오버라이딩 (Method Overriding):
- 상위 클래스에서 정의된 메소드를 하위 클래스에서 동일한 시그니처로 재정의하는 것입니다.
class Animal {
void makeSound() {
System.out.println("Some generic sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Woof!");
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("Meow!");
}
}
- 인터페이스와 다형성:
- 인터페이스를 통해 다형성을 구현할 수 있습니다. 여러 클래스가 같은 인터페이스를 구현하면, 이들은 같은 형태로 다룰 수 있습니다.
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle");
}
}
2. 상속 (Inheritance):
상속은 기존의 클래스에서 필드와 메소드를 물려받아 새로운 클래스를 만드는 것을 의미합니다. 이는 코드의 재사용성을 높이고, 클래스 간에 계층 구조를 형성할 수 있도록 합니다.
- 부모 클래스 (상위 클래스 또는 슈퍼 클래스):
- 다른 클래스에게 속성과 메소드를 제공하는 클래스입니다.
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
- 자식 클래스 (하위 클래스 또는 서브 클래스):
- 다른 클래스(부모 클래스)로부터 상속받은 속성과 메소드를 가지고 있는 클래스입니다.
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
}
- 상속의 장점:
- 코드의 재사용성이 증가하고, 중복을 방지합니다.
- 클래스 간의 계층 구조를 형성하여 설계를 간결하게 만듭니다.
- 유지보수가 용이해집니다.
상속과 다형성은 객체지향 프로그래밍의 핵심 개념으로, 코드를 더 유연하고 확장 가능하게 만들어줍니다. 상속을 사용하면 새로운 클래스를 기존 클래스의 특성을 기반으로 쉽게 만들 수 있으며, 다형성을 통해 여러 클래스를 하나의 형태로 통일적으로 다룰 수 있습니다.