본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

Class 형변환

앞서 형변환에 대해 알아봤었다.

기본형뿐만 아니라 Class 도 형변환이 가능하다.

https://standout.tistory.com/67

 

묵시적 형변환과 명시적 형변환

결론부터 말하자면 묵시적은 컴퓨터가 알아서 바꿔주는것, 명시적은 개발자가 직접 바꾸는것이다. 묵시적 형변환(Implicit 또는 Promotion)은 연산등의 작업을 수행할 때, 자동으로 형변환이 일어나

standout.tistory.com

 

 

여기서 주의할 점은, 

부모 클래스를 자식 클래스로 형변환하는 것은 불가능하다.

 

한 백화점이 고객관리를 하는데
VIP고객은 고객 안에 속해있지만
고객이 다 VIP고객이 될 순 없는것 처럼 예외가 존재한다는 것.

public class Customer {
    private String name;
    private String email;

    public Customer(String name, String email) {
        this.name = name;
        this.email = email;
    }

    // getters and setters
    // ...
}

public class VIPCustomer extends Customer {
    private int vipLevel;

    public VIPCustomer(String name, String email, int vipLevel) {
        super(name, email);
        this.vipLevel = vipLevel;
    }

    // getters and setters
    // ...
}
Customer customer1 = new Customer("Alice", "alice@example.com");
VIPCustomer vipCustomer1 = new VIPCustomer("Bob", "bob@example.com", 2);

// Customer 객체를 VIPCustomer 객체로 형변환
VIPCustomer vipCustomer2 = (VIPCustomer) customer1;

// VIPCustomer 객체를 Customer 객체로 형변환
Customer customer2 = vipCustomer1;

앞서 배운것처럼
Class 형변환에서도 묵시적, 명시적 형변환이 일어난다.

(VIPCustomer)와 같이 캐스트 연산자를 사용하여 
코드 외관상으로는 문제가 없을 수 있으나
이는 불가능하여 위 코드에서는 ClassCastException이 발생하게된다.

'JAVA' 카테고리의 다른 글

상속받다, implements  (0) 2023.03.16
덮어쓰는 annotation, @Override  (0) 2023.03.16
this 와 super  (0) 2023.03.16
상속받다, extends  (0) 2023.03.16
날짜형식 정하기, SimpleDateFormat()  (0) 2023.03.16