728x90
728x90
캐스팅 = 형변환
캐스팅 casting : 데이터 손실을 막기 위해 다형성을 지켜주는 것
ex) int에 float을 넣으면 소수점 뒷자리가 날라가버림 => 데이터 손실 -> 방지위해 캐스팅: int a = (int)1.0;
그래서 큰 거에 작은 걸 넣을 때는 안 해줘도 자동으로 캐스팅이 되는 것!
업 캐스팅 upcasting : 자식클래스가 부모클래스가 되는 것(이때 자식 클래스의 인스턴스는 잠시 가려져 있을 뿐 사라지는 것은 아니다.) 업캐스팅은 자식 인스턴스가 부모 자료형의 데이터를 모두 갖고 있기 때문에 형변환 기호를 붙이지 않아도 된다. 변수가 원하는 정보를 인스턴스가 이미 다 알고 있기 때문이다.
class Parent{ ...}
class Child extends Parent{
@Override public void sth(){
...
}
...
}
public class UpcastingEx{
public static void main(String[] args){
Parent p;
Child c = new Child("");
p = c; //업 캐스팅 발생
}
}
다운 캐스팅 downcasting : 자식 클래스를 원래의 특성으로 돌려 놓는 것으로(그러므로 업캐스팅이 선행되어야 한다), 업 캐스팅과 달리 명시적으로 타입을 지정해야 한다. 부모에서 정의하지 않은 정보를 자식에서 더 정의해줬기 때문에 부모 클래스보다 자식 클래스가 더 많은 데이터를 가졌기 때문이다.
위의 코드를 다운 캐스팅으로 바꾼 것이다.
public class DowncastingEx{
public static void main(String[] args){
Parent p = new Parent("");
Child c;
c = (Child) p; //다운 캐스팅 발생
}
}
728x90
728x90
'언어 > JAVA' 카테고리의 다른 글
캡슐화, 상속, 다형성, Fan in Fan out, 모듈 결합도와 응집도 (0) | 2020.08.16 |
---|---|
구조적 기법과 객체 지향 기법. 클래스 간의 관계 (0) | 2020.08.16 |
자바 프로그램의 구조, 문법 (0) | 2020.08.05 |
댓글