반응형
상속
- 부모 클래스의 필드와 메서드를 자식 클래스에게 물려주는 것
- 자바는 다른 언어와 달리 다중 상속을 허용하지 않는다. 단 하나의 부모클래스가 와야 한다.
public class 자식클래스 extends 부모클래스{}
업캐스팅
- 자식 객체를 부모의 타입으로 해석하는 것
- 다양한 객체들을 부모의 타입으로 관리할 수 있다.
Animal a = new Dog();
Animal b = new Cat();
Animal c = new Horse();
Animal[] animals = new Animal[]{a,b,c};
자동 타입 변환
- 자식 클래스는 부모 클래스로 자동 타입 변환할 수 있다
Cat cat = new Cat();
Animal animal = cat; // new Cat();
- 부모 타입으로 자동 타입 변환된 이후는 부모 클래스에 선언된 필드와 메서드에만 접근 가능하고, 자식 클래스의 필드나, 메서드는 접근 불가능하다.
- 단, 자식 클래스에서 오버라이딩한 메서드가 있다면 부모 메서드대신 오버라이딩된 메서드가 호출된다.
강제 타입 변환
- 부모 타입 클래스를 자식 타입 클래스로 강제 변환하는 것
- 부모 타입으로 자동 변환을 한 후 다시 자식 타입으로 변환할 때 사용 가능하다. 그 외에는 불가능
- 자식 객체가 부모 타입으로 자동 변환하면 부모 타입에 선언된 필드와 메서드만 사용 가능하다는 제약이 있는데 자식 타입에 선언된 필드나 메서드를 꼭 사용하고 싶을 때 강제 타입 변환을 해준다.
다형성
- 서로 다른 자식 클래스가 부모 클래스 메서드를 오버라이딩하고 있을 때 오버라이딩된 메서드의 내용은 각자 다르게 나오는 것
- 다형성을 구현하기 위해서는 자동 타입 변환과 메서드 오버라이딩이 필요하다.
- 주로 필드보다는 메서드를 호출할 때 많이 발생한다.
추상 클래스
- 객체를 생성할 수 있는 클래스를 실체 클래스라 한다면, 이 클래스들의 공통적인 필드나 메서드를 추출해서 선언한 클래스를 추상 클래스라 한다.
- 추상 클래스는 실체 클래스의 부모 역할을 한다. 즉, 추상 클래스를 상속해서 공통된 필드나 메서드를 물려받을 수 있다.
- 새로운 실체 클래스를 만들기 위한 부모 클래스로만 사용 extends 뒤에만 올 수 있다.
추상 클래스 선언
- 클래스 선언에 abstract 키워드
- new 연산자를 사용해서 객체를 직접 만들지 못하고 상속을 통해 자식 클래스만 만들 수 있다.
public abstract class 클래스명{
// 필드
// 생성자
// 메서드
}
추상 메서드
- 자식 클래스들이 가지고 있는 공통 메서드를 뽑아 추상 클래스로 작성할 때, 선언부만 동일하고 내용은 자식 클래스마다 달라야하는 경우가 많다.
// abstract 리턴타입 메서드명(매개변수);
public abstract class Animal{
// 필드
// 생성자
// 메서드 abstract void sound();
}
'Backend > Java' 카테고리의 다른 글
Java - 익명 클래스, 익명 객체 (0) | 2023.02.22 |
---|---|
Java - 중첩 클래스 (0) | 2023.02.22 |
Java - 객체, 클래스, 인스턴스의 차이 (2) | 2023.02.19 |
Java - 오버로딩(overloading), 오버라이딩(overriding) 차이점 (0) | 2023.02.19 |
Java - 접근 제한자 (0) | 2023.02.19 |
댓글