기존 클래스(부모 클래스 또는 슈퍼 클래스)의 속성과 메서드를 새로운 클래스가 물려받아 사용하는 기능.
코드 재사용성 : 부모 클래스에서 정의한 메서드와 속성을 자식 클래스가 재사용하여 코드 중복성을 줄이고, 개발 속도를 높이며 유지보수 쉽게.
확장성 : 부모 클래스의 기존 기능을 확장하거나 변경(오버라이딩)하여 새로운 기능을 추가
계층 구조 형성 : 클래스 간 계층적 관계를 형성해 코드의 구조를 명확히 할 수 있음
다형성과 연계 : 상속은 다형성을 지원하는 기반이 됨.
// 부모 클래스
class Animal {
String name;
void eat() {
System.out.println(name + " is eating.");
}
}
// 자식 클래스
class Dog extends Animal {
void bark() {
System.out.println(name + " is barking.");
}
}
// 실행
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "Buddy";
dog.eat(); // 부모 클래스의 메서드 사용
dog.bark(); // 자식 클래스의 메서드 사용
}
}
class Animal {
void sound() {
System.out.println("Some sound...");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.sound(); // "Bark" 출력
}
}
class Animal {
Animal() {
System.out.println("Animal constructor");
}
}
class Dog extends Animal {
Dog() {
super(); // 부모 클래스 생성자 호출
System.out.println("Dog constructor");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
}
}
제약