자바15강 다형성 - 클래스 캐스팅
JadeStone의 깃허브 링크:
https://github.com/BigJadeStone/java-class
<오늘의 실습 문제들>
<어제 복습 내용>
참고 폴더 : day07.encap.obj,Quiz11(실습)
-defaualt는 접근제한자를 붙이지 않은 형태.
-객체를 반복문 밖에서 생성해 줄 때는 변수값을 다르게 해줘야하지만.
반복문 안에서 객체를 여러번 생성할 때 변수값을 그대로 해도 되는 이유는.
첫째 한번 생성한 객체를 별다른 저장공간에 저장해주지 않으면 이는 사라진다.
둘째 한번 생성한 객체를 배열처럼 저장공간에 각각 담아주면 각각 고유의 객체가 된다.
위 2가지 이유 때문이다.
-자동완성 기능은 내가 손으로 직접 잘 쓸 수 있을 때부터 써야된다. 안그러면 실력인 안늠.
-public Hotel(Chef chef) {} // 클래스 타입을 받을거면 참조타입에 해당 클래스 이름을 쓰면된다.
-객체 안에 객체들이 있는 모양도 알아두자. 당장 이해하기 어렵지만 이해하면 잘 하는것.
예를들어 부모클래스 안에 여러 자식 클래스를 넣어서 쓰는 것과 같은 것들 등등.
-null 은 초기값이 아니라. 아얘없다는 뜻. 그래서 초기값을 설정할 때는 null을 설정하면 안됨. 자바에서는.
다시말하지만 null은 텅 비어있다는 뜻.
-private KeyBoard key= new KeyBoard();
여기서 우항에 new KeyBoard() 이걸 넣은 의미는 객체를 초기화 해주는것이라는 뜻.
public void setKeyBoard(KeyBoard key) {
this.key = key;
}
public KeyBoard getKeyBoard() {
return key;
}
com.getKeyBoard().info(); //getter 메서드는 클래스를 가져온것. 즉 클래스 참고라고 보고 . 찍고 클래스 안에 기능을 사용하면됨.
<오늘 수업>
자바교안 14강
다형성(Polymorphism)
참고 폴더: day08.poly.basic
- 다형성이란 "객체가 여러 형태를 가진다"라는 의미로 해석되며, 하나의 객체가 여러가지 유형으로
사용되는 것을 의미합니다. -> 즉, 클래스의 형변환 이라고 생각하면 됨.
- ★ 다형성은 상속을 전제조건으로 합니다 ★
- 다형성을 위해 자바는 자식클래스가 부모클래스의 타입을 가질 수 있도록 허용합니다. 즉, 부모 타
입에 모든 자식객체가 대입될 수 있습니다.
- 자식이 부모에 저장될 수 있다.
그때 부모처럼 사용된다.
단, 오버라이징 된 메서드는 먼저 실행된다.
클래스 Casting
참고 폴더: day08.poly.basic , day08.poly.basic2 , Quiz12(다형성 배운거 총집합 실습, 깃허브에 실습 파일 따로 올리기.)
강제 타입 변환(Type Casting)
- 강제 타입 변환은 부모 타입을 자식 타입으로 변환하는 것을 말합니다. (정확히는 부모가 자식으로 들어가는 것이 아니라 바로 아랫줄.)
- ★★★객체에서 타입 캐스팅을 사용하려면 우선 먼저 Promotion이 일어나야 합니다. 즉, 부모 타입으로 한번
형 변환이 된 자식 객체만 강제 타입 변환을 사용할 수 있습니다.★★★
- Promotion이 일어나면 자식 클래스가 가지고 있는 재정의되지 않은 메서드를 사용할 수 없다는 단점
이 있었습니다. 이 단점을 극복하기 위해 강제 타입 변환을 사용하여 자식 메서드를 호출하는 방법을 사
용합니다.
추가 메모내용.
-자식이 부모에 저장되는데, 부모님처럼 사용되지만 단, 자식의 오버라이딩된 메서드가 실행됩니다.
-Parent p = c; //동일한 문장 Parent p = new Child();
헷갈리면 타입을 중요시한다고 했으니 p 변수 왼쪽에 타입에 맞는 기능이 사용된다고 보면됨.
(여기서는 child가 아닌 parent의 기능이 사용되는데. 오버라이딩 된 메서드만 child의 것이 사용됨.)
-자식이 부모타입으로 형변환 되었을 때, 자식이 갖고 있던 메서드(기능)은 사용 불가.
-위 페런트와 차일드 식에서 생각해 볼 점.
System.out.println(p==c); //동일한 주소값을 나타냄. 다형성이란 잠깐 형변환을 해주는 것이다.
# 다운캐스팅
-다형성이 적용되면, 자식이 가지고 있던 본래의 기능을 사용할 수 없기 때문에, 클래스캐스팅을 사용합니다.
즉, 자식이 부모로 캐스팅 되었던것을 다시 자식으로 되돌리는 것임(다형성이 적용된 객체만 캐스팅이 가능합니다).
<오늘 기억할 내용>
-alt + shift + s -> 오버라이딩도 자동으로 할 수 있음.
(사진2 위치)