업캐스팅
서브 클래스 객체 타입 => 슈퍼 클래스 타입으로 변환
동일한 슈퍼 클래스를 상속받은 서브 클래스 객체들을 배열로 관리 가능
업캐스팅된 레퍼런스는 객체 내의 슈퍼 클래스 멤버만 접근 가능
class Person { … }
class Student extends Person { … }
Student s = new Student();
Person p = s; // 업캐스팅, 자동타입변환
다운캐스팅
슈퍼 클래스 객체 타입 => 서브 클래스 타입으로 변환
괄호 안에 변환할 타입 명시
class Person { … }
class Student extends Person { … }
...
Person p = new Student("이재문"); // 업캐스팅
…
Student s = (Student)p; // 다운캐스팅, (Student)의 타입 변환 표시 필요
instanceof 연산자
슈퍼 클래스는 여러 서브 클래스를 상속함
=> 업캐스팅된 레퍼런스로 객체 타입 판단 어려움
사용법: 객체레퍼런스 instanceof 클래스타입, 주로 if문의 조건식에 삽입
레퍼런스가 가리키는 객체 타입 식별, true/false의 boolean 값 리턴
메소드 오버라이딩(덮어쓰기)
슈퍼 클래스의 메소드를 서브 클래스에서 "재정의"
슈퍼 클래스와 메소드 이름, 매개변수 타입과 개수, 리턴 타입 등 모든 것 동일
동적 바인딩 : 슈퍼 클래스 무시하고, 서브 클래스에서 오버라이딩된 메소드 실행
자바에서 오버라이딩된 메소드가 있다면, 동적바인딩을 통해 오버라이딩된 메소드가 무조건 실행됨
오버라이딩과 super 키워드
서브 클래스에서, 슈퍼 클래스의 멤버 접근할 때 사용
정적 바인딩: 슈퍼 클래스의 메소드 호출
오버라이딩 vs 오버로딩
오버라이딩 | 오버로딩 |
같은 클래스 내 or 상속관계 내 | 같은 클래스 내 |
매개변수 동일해야 | 매개변수 타입이나 개수가 달라야 |
리턴타입 동일해야 | 리턴타입과 무관 |
'Language > JAVA' 카테고리의 다른 글
자바기반응용프로그래밍 - 모듈과 패키지 기초 (0) | 2022.04.14 |
---|---|
자바기반응용프로그래밍 - 추상메소드, 추상클래스, 인터페이스 (0) | 2022.04.14 |
자바기반응용프로그래밍 - 배열 (0) | 2022.04.12 |
자바기반응용프로그래밍 - 상속 (0) | 2022.04.11 |
자바기반응용프로그래밍 - 반복문 (0) | 2022.04.11 |