상속이란?
- 기존의 클래스를 재사용하는 방식 중의 하나입니다.
재사용을 하면 장점은?
- 코드를 재사용하면, 코드와 클래스가 많아질수록 관리가 용이하다는 장점이 있습니다.
- 변경사항만 코드로 작성하므로 상대적으로 적은 양의 코드를 작성할 수 있게 됩니다.
상속의 특징
- 부모 클래스로에서 정의된 필드와 메소드를 물려 받습니다.
- 새로운 필드와 메소드를 추가할 수 있습니다.
- 부모 클래스스에서 물려받은 메소드를 수정할 수 있습니다.
상속의 형식
- 상속은 extends를 이용하여 사용할 수 있습니다.
class Animal{}
class Dog extends Animal{} //Animal를 상속받은 Dog
class Cat extends Animal{} //Animal를 상속받은 Cat
- 그림에서 Animal 는 부모 클래스, 조상 클래스라고 부릅니다. Dog, Cat 클래스는 자식 클래스 , 자손 클래스라고 부릅니다.
- 코드로 한번 보겠습니다.
String name;
public void cry() {
System.out.println(name + " is crying.");
}
}
class Dog extends Animal {
Dog(String name) {
this.name = name;
}
public void swim() {
System.out.println(name + " is swimming!");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("코코");
dog.cry();
dog.swim();
Animal dog2 = dog;
dog2.cry();
// dog2.swim(); // compile error
}
}
-자식(Dog) 객체는 자식(Dog) 타입으로 선언된 변수에도 할당할 수 있고, 부모(Animal) 타입으로 선언된 변수에도 할당할 수 있습니다. 단, 부모(Animal) 타입의 변수로 사용할 때는, 실제 객체를 만들(new) 때 사용한 자식(Dog) 타입에 있는 함수 (여기서는 swim())을 호출할 수 없습니다. 컴파일 에러입니다.
👉 참고로, 상속을 받을 때 여러 클래스를 상속받을 수는 없습니다! 오직 하나의 클래스만을 상속받을 수 있습니다.
'몰아 넣기' 카테고리의 다른 글
[java] 자바 접근제어자 (0) | 2022.06.10 |
---|---|
[java/객체지향] 오버로딩(overloading) vs 오버라이딩(overriding) (0) | 2022.06.10 |
[java/객체 지향] 객체 지향 프로그래밍 (0) | 2022.06.10 |
[java/stream] 스트림(stream) 사용방법 (0) | 2022.06.10 |
[java/stream] 스트림(stream)의 개념 (0) | 2022.06.10 |