JAVA
업캐스팅(Up Casting) 활용 | 21/12/22
S.I.B
2022. 1. 9. 23:53
코드 작성
package ex_type_casting; public class Ex1 { public static void main(String[] args) { // 업캐스팅 연습 // 1. 서브클래스 타입 인스턴스 생성 SmartPhone 내폰 = new SmartPhone(); // 서브클래스 타입으로 접근 가능한 메서드 : 4개 내폰.call(); // 상속받은 메서드 내폰.sms(); // 상속받은 메서드 내폰.kakaoTalk(); // 서브클래스에서 직접 정의한 메서드 내폰.youtube(); // 서브클래스에서 직접 정의한 메서드 System.out.println("----------------------------------------"); // 2. 슈퍼클래스 타입 변수 선언 및 서브클래스의 인스턴스 전달 HandPhone 엄마폰 = 내폰; // 서브클래스타입 -> 슈퍼클래스타입(업캐스팅, 자동형변환) // => 참조변수 내폰이 가진 데이터(주소값)을 전달 // 슈퍼클래스 타입으로 접근 가능한 메서드 : 2개 엄마폰.call(); 엄마폰.sms(); // 업캐스팅 시 참조한 가능한 영역의 축소가 일어나므로 // 슈퍼클래스 타입으로 접근 가능한 메서드 개수가 줄어들게 됨 // => 즉, 슈퍼클래스 내의 멤버와 동일한 멤버에만 접근 가능하게 됨 // 엄마폰.kakaoTalk(); // 에러 발생! 서브클래스에서 직접 정의한 메서드 // 엄마폰.youtube(); // 에버 발생! 서브클래스에서 직접 정의한 메서드 System.out.println("----------------------------------------"); // 또 다른 서브클래스 타입 인스턴스 생성 SmartPhone 동생폰 = new SmartPhone(); 엄마폰 = 동생폰; // 서브클래스타입 -> 슈퍼클래스타입으로 업캐스팅 엄마폰.call(); 엄마폰.sms(); System.out.println("----------------------------------------"); // 다운캐스팅 연습(허용되지 않는 경우) // 1. 슈퍼클래스의 인스턴스 생성 HandPhone 엄마폰2 = new HandPhone(); // 슈퍼클래스 타입으로 접근 가능한 메서드 : 엄마폰2.call(); 엄마폰2.call(); // 2. 서브클래스 타입 변수에 슈퍼클래스 인스턴스 전달 // => 다운캐스팅 수행 // SmartPhone 내폰2 = (SmartPhone) 엄마폰2; // 내폰2.call(); // 내폰2.sms(); // 내폰2.kakaoTalk(); // 내폰2.youtube(); System.out.println("----------------------------------------"); // 다운캐스팅 연습(허용되는 경우) // 1. 서브클래스의 인스턴스 생성(업캐스팅 수행 포함) HandPhone 엄마폰3 = new SmartPhone(); // 업캐스킹 엄마폰3.call(); 엄마폰3.sms(); // 2. 서브클래스 타입으로 다운캐스팅 SmartPhone 내폰3 = (SmartPhone) 엄마폰3; // 다운캐스팅 내폰3.call(); 내폰3.sms(); 내폰3.kakaoTalk(); 내폰3.youtube(); } } class HandPhone{ public void call() { System.out.println("핸드폰의 전화 기능"); } public void sms() { System.out.println("핸드폰의 문자 기능"); } } // SmartPhone 클래스 정의 - HandPhone 클래스 상속 class SmartPhone extends HandPhone{ public void kakaoTalk() { System.out.println("SmartPhone의 카톡 기능!"); } public void youtube() { System.out.println("SmartPhone의 유튜브 기능!"); } }
업캐스팅(Up Casting) 다운 캐스팅(Down Casting) 을 활용한 연습!
출력 결과
핸드폰의 전화 기능
핸드폰의 문자 기능
SmartPhone의 카톡 기능!
SmartPhone의 유튜브 기능!
----------------------------------------
핸드폰의 전화 기능
핸드폰의 문자 기능
----------------------------------------
핸드폰의 전화 기능
핸드폰의 문자 기능
----------------------------------------
핸드폰의 전화 기능
핸드폰의 전화 기능
----------------------------------------
핸드폰의 전화 기능
핸드폰의 문자 기능
핸드폰의 전화 기능
핸드폰의 문자 기능
SmartPhone의 카톡 기능!
SmartPhone의 유튜브 기능!
나의 소감
선생님이 아직 이해가 잘 안되냐고 물어보셔서 내가 전 시간에 생활과 밀접한 예시는 없냐고 여쭈어 봤더니 다음시간에
이렇게 또 알기 쉽게 예시를 만들어서 설명해주셨다!
우리 쌤 너무 친절하고 멋찌다! 감사합니다 ♡