상속
- 클래스를 정의할 때 이미 구현된 클래스를 상속 받아
속성이나 기능이 확장되는 클래스를 구현하는 것
방법
class B(하위 클래스) extends A(상위 클래스){ }
Example.java
public class Example{
int a = 10;
public int getA(){
return a;
}
}
Main.java
public class Main extends Example
{
public static void main(String[] args) {
Example example1 = new Example();
int b = example1.getA() + 10;
System.out.println(b);
}
}
// 결과
// 20
개념
- 상위 클래스는 비교적 일반적인 의미,
하위 클래스는 비교적 구체적인 의미를 가짐 - extends 뒤엔 하나의 class만 사용 가능
- super 예약어
this가 자신의 인스턴스 주소를 가지는 것처럼
하위클래스가 상위클래스에 대한 주소를 가지게 됨
하위클래스가 상위클래스에 접근할 때 사용함
업캐스팅
상위 클래스형으로 변수를 선언,
하위 클래스 인스턴스 생성
Animal A = new Cat();
☝️상위 클래스 ☝️하위 클래스
- Cat() 생성자의 호출로 인스턴스는 모두 생성,
- 타입이 Animal로 접근할 수 있는 변수나 메서드는 Animal의 변수와 메서드
메서드 오버라이딩
상위 클래스에서 정의된 메서드를 하위메서드에서 재정의 하는 것
- @Override
재정의된 메서드 - @FunctionalInterface
함수형 인터페이스 - @Deprecated
버전이 업그레이드 되면 사용되지 않을 수도 있는 변수 or 메서드 - @SupperessWarnings
특정 경고가 나타나지 않게 함
다형성
- 하나의 코드가 여러가지 자료형으로 구현돼 실행디는 것
- 정보은닉, 상속 등과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나
- 객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징
명제 네가지
- 부모 타입은 자식 객체를 참조할 수 있음
- 자식 타입은 부모 객체를 참조할 수 없음
- 타입은 메서드를 호출할 수 있냐 없냐만 결정(= 자신이 알고 있는 메서드만 호출 가능)
- 자식은 부모보다 커질 수 있지만, 작아질 순 없다.
다운 캐스팅 - instanceof
- 하위 클래스가 상위 클래스로 형 변환되는 것은 묵시적으로 이뤄짐
- 다시 원래 자료형인 하위 클래스로 형 변환 하려면 명시적으로 다운 캐스팅을 해야함
- 이때 원래 인스턴스의 타입을 체크하는 예약어가 instanceof
Animal baby = new Cat();
if(baby instanceof Cat){ // baby의 인스턴스 자료형이 Cat형이라면
Cat cat = (Cat)baby; //인스턴스 baby를 Cat형으로 다운캐스팅함
}
'JAVA' 카테고리의 다른 글
ep 05-1.추상 클래스 (0) | 2022.12.02 |
---|---|
ep 04-3. 문제풀이3 (0) | 2022.11.27 |
ep 04-1. 배열과 ArrayList (0) | 2022.11.27 |
ep 03-4. 문제 풀이2 (0) | 2022.11.20 |
ep 03-3. 클래스와 객체2 (0) | 2022.11.20 |