1. 상속 (Inheritance)
자바의 상속은 한 클래스가 다른 클래스의 속성과 메소드를 물려받는 기능으로 extends 키워드를 사용해 상속을 구현할 수 있습니다. 상속을 통해 코드를 재사용하고, 계층 구조를 생성할 수 있습니다. 상속의 특징과 장점은 다음과 같습니다.
- 특징
- 단일 상속: 자바는 클래스가 하나의 부모 클래스만 상속받을 수 있으며, 이를 통해 다이아몬드 문제를 피할 수 있음
- 재사용성: 상위 클래스의 속성과 메소드를 하위 클래스가 재사용할 수 있음
- 계층 구조: 클래스 간의 관계를 계층적으로 정의할 수 있어, 객체 간의 관계를 직관적으로 이해
- 장점
- 코드의 재사용성: 이미 작성된 클래스의 기능을 재사용해 새로운 클래스를 쉽게 만들 수 있음
- 유지보수 용이성: 코드의 수정이 용이하며, 상위 클래스에서 수정하면 모든 하위 클래스에 자동 적용
- 확장성: 새로운 기능을 추가하거나 기존 기능을 수정하는 것이 상대적으로 간단
상속(Inheritance) 사용법
class Animal {
void speak() {
System.out.println("Anime is Speak");
}
}
class Dog extends Animal {
@Override
void speak() {
System.out.println("멍멍!");
}
}
class Cat extends Animal {
@Override
void speak() {
System.out.println("야용!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.speak(); // 출력: 멍멍!
myCat.speak(); // 출력: 야옹!
}
}
2. 다형성 (Polymorphism)
다형성은 동일한 메소드가 다양한 방식으로 동작할 수 있는 능력을 의미하며, 자바에서는 메서드 오버라이딩(overriding)과 메소드 오버로딩(overloading)을 통해 다형성을 구현합니다. 다형성의 특징으로는 다음과 같습니다.
- 특징
- 메소드 오버라이딩: 상속받은 클래스에서 슈퍼클래스의 메소드를 재정의
- 메소드 오버로딩: 같은 이름의 메소드를 매개변수의 타입이나 개수에 따라 여러 개 정의
- 동적 바인딩: 메소드 호출 시점에 어떤 메소드를 호출할지 경정되므로 유연한 코드 작성 가능
- 장점
- 유연성: 다양한 객체를 동일한 방식으로 처리할 수 있어, 코드의 간결함과 쉬운 유지보수
- 인터페이스 호환성: 인터페이스를 통해 다형성을 더욱 극대화할 수 있어, 다양한 구현체를 사용할 수 있음
- 코드의 가독성 향상: 객체의 타입에 관계없이 동일한 메소드를 호출할 수 있어, 코드의 가독성이 높아짐
interface Animal {
void speak();
}
class Dog implements Animal {
@Override
public void speak() {
System.out.println("멍멍!");
}
}
class Cat implements Animal {
@Override
public void speak() {
System.out.println("야용!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.speak(); // 출력: 멍멍!
myCat.speak(); // 출력: 야용!
}
}
GitHub - Koras02/java-bloging: https://thinky.tistory.com/category/Back-End/Java
https://thinky.tistory.com/category/Back-End/Java. Contribute to Koras02/java-bloging development by creating an account on GitHub.
github.com
LIST
'Back-End > Java' 카테고리의 다른 글
[Java] 8장 try-catch 문 (0) | 2025.03.18 |
---|---|
[Java] 7장 인터페이스 (0) | 2025.03.08 |
[Java] 5장 클래스와 객체 (0) | 2025.03.02 |
[Java] 4장 메서드 작성 (0) | 2025.02.26 |
[Java] 3장 제어문 (0) | 2025.02.25 |