중복정의(오버로딩)
메소드 오버라이딩(재정의)
메소드 이름, 리턴 타입, 파라미터 수나 타입이 완전히 일치해야 한다.
오버라이딩(재정의)은 반드시 상속 관계가 있어야 한다.
상위클래스의 메소드의 접근제한자가 protected인 경우
하위클래스가 이 메소드를 오버라이딩하는 경우 접근 제한자는 public 또는 protected이어야 한다.
(하위클래스의 접근제어자는 상위클래스보다 크거나 같아야 한다)
static, final, private 메소드는 오버라이딩 할 수 없다.
override한 경우 상위 클래스의 메소드는 숨는다.
어노테이션
소스 코드에 메타 데이터를 표현하는 것으로 컴파일 또는 실행 과정에서 코드를 어떻게 컴파일하거나 처리할 것인지를 알려주는 정보
실행시 특정 기능을 실행하도록 정보를 제공
ex) @Override(오버라이딩 검사)
클래스 참조형 변수의 형 변환
레퍼런스 형 변환은 상속 관계에 있는 클래스 레퍼런스 변수들 사이에서 가능하며,
인터페이스와 인터페이스를 구현한 클래스 객체에서도 가능하다.
클래스는 상하관계가 아니면 형변환이 불가능하다
ex) Object > Number > Integer
참조 변수의 다형성
다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미
up-casting
상위 클래스의 객체가 하위 클래스의 객체를 참조하는 것
up-casting은 언제나 가능하며 형변환을 하지 않아도 된다.
Demo2 ob2 = tt1; // 실행 시점에 하위클래스의 주소를 상위클래스에 참조변수에 대입
up-casting된 경우에도 필드는 무조건 자신의 것을 가져옴
필드는 업캐스팅되어 있어도 무조건 자신 것. 없으면 상위 것
// System.out.println(ob2.c); // 컴파일 오류
// 컴파일 단계에서 인지를 못해 오류 발생
down-casting
up-casting한 객체를 다시 원래의 객체로 캐스팅하는 것
down-casting은 업 캐스팅된 것만 가능하다.
down-casting은 반드시 강제 캐스팅을 해야 한다.
메소드는 override된 경우에는 재정의된 메소드(하위 클래스 메소드) 호출
메소드가 재정의되면 상위 클래스 메소드는 숨는다.
업캐스팅은 언제나 가능하며, 자동 캐스팅이 일어난다.
상속관계가 아니면 레퍼런스 변수(참조)는 형 변환이 불가능하다.
업캐스팅한 것만 다운캐스팅이 가능하다.
다운캐스팅은 반드시 명시적으로 캐스팅을 해야 한다.
instanceof 연산자
주어진 객체가 어떤 클래스 또는 그 클래스가 상속하는 하위 클래스의 인스턴스 인지를 검사 하기 위해 사용
연산 결과는 boolean형(true또는false)을 리턴한다.
'Study > 쌍용' 카테고리의 다른 글
자바 예외 처리(1) (0) | 2022.07.28 |
---|---|
자바 추상 클래스 & 인터페이스 (0) | 2022.07.27 |
자바 상속 & super (0) | 2022.07.25 |
자바 기본 API 클래스(2) (0) | 2022.07.23 |
자바 기본 API 클래스(1) (0) | 2022.07.22 |