반응형
상속 (Inheritance)
Java에서는 클래스 간 상속의 개념이 존재
상속이란 말 그대로 부모 자식 간의 상속을 의미
부모 클래스를 상속 받는다는 말의 뜻은, 부모 클래스의 클래스 변수, 메서드를 재사용, 확장한다는 의미
추상 클래스, 인터페이스 내용 참고 : [Java] 추상클래스와 인터페이스
클래스 상속
- extends 키워드 사용
- 일반 클래스 또는 추상 클래스를 상속 받을 수 있음
- 다중 상속 받을 수 없음
- 부모의 메소드 그대로 사용 가능
- 부모의 메소드를 재정의(오버라이딩) 가능
- 생성자 규칙
- super(...) 메소드를 사용하여 부모 생성자 호출
- 자식 클래스의 생성자에서는 반드시 부모 생성자(super)를 첫째줄에 선언 해주어야 함
- 생성자 규칙
// 부모 클래스
class Animal{
protected String name;
public Animal(String name){
this.name = name;
}
public void move(int x){
System.out.println(x + "만큼 앞으로 움직인다.");
}
public void eat(String food){
System.out.println(food + "를 먹는다.");
}
}
// 자식 클래스
class Cat extends Animal{
public Cat(String name){
super(name);
}
@Override
public void move(int x){
System.out.println(x + "만큼 뒤로 움직인다.");
}
}
public class Main {
public static void main(String[] args){
Cat cat = new Cat("mycat");
cat.move(5);
cat.eat("fish");
}
}
인터페이스 상속
- 클래스가 인터페이스를 상속 받을 때는 implements 키워드 사용
- 다중 상속 가능 (인터페이스 여러개 붙일 수 있음)
- 상속받은 인터페이스의 추상화 메소드를 모두 오버라이딩해서 구현해야 함
interface Swimmable {
void swim();
}
class A implements Swimmable {
@Override
public void swim() {
System.out.println("A can backstroke");
}
}
class B implements Swimmable {
@Override
public void swim() {
System.out.println("B can butterfly");
}
}
public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.swim(); // A can backstroke
b.swim(); // B can butterfly
}
}
인터페이스가 다른 인터페이스를 상속 받을 수 있는데, 이경우는 extends 키워드 사용
반응형
'IT > Programming Language' 카테고리의 다른 글
[Java] 어노테이션 (Annotation) (0) | 2025.02.09 |
---|---|
[Java] 데이터 타입, 자료형 (Data Type) (0) | 2025.02.09 |
[Java] 추상클래스와 인터페이스 (0) | 2025.02.09 |
[Java] 동일성(identity)과 동등성(equality) (0) | 2025.02.09 |
[C++/STL] Iterator (0) | 2025.02.02 |