1~4 . 정리하기
이론 정리챕터3
형변환 : casting
- 영어 단어 : casting (주조) : 제료를 융해되는 온도보다 높게 가열하여 액체화 하여 형태를 바꾸는 것
- 간단 정의 :
- UpCasting : 서브 클레스를 슈퍼 클레스로 변환
- DownCasting : 서브 클레스에서 슈퍼 클레스로 업케스팅 된 클레스에 한해서. 다시 서브 클레스로 변환이 가능하다.
- 용도 : 다형성 (Polymophism)
- 다형성이란?
- 객체 지향의 특징
- 서브 클레스의 메소드를 중복되게 슈퍼 클레스에서 생성해야 할때. 서브클레스의 메소드를 사용할수 있다.
- 다형성이란?
- 사용방법 : Perents perent = new childen();
- perents는 perent의 메소드를 사용할수 있지만 children 의 메소드를 우선적으로 사용한다.
형변환 TEST
package upcasting;
import org.w3c.dom.TypeInfo;
class caffee { // super Class
String cafeebean ;
String sugar = "설탕 : 미포함";
void eat () {
System.out.println("카페인 섭취가 완료 되었습니다.");
}
void buyCaffee() {
System.out.println("커피 콩을 구입하였습니다");
}
void changebean() {
this.cafeebean = "원산지 : 정체불명";
}
}
class goldMoca extends caffee {//sub Class
String sugar = "설탕 : 포함";
String instance = "인스턴트 커피 입니다";
void eat() {
System.out.println("설탕으로 인해 집중력과 행복도가 증가 하였으나. 당료병 가능성, 채중이 증가 하였습니다.!");
}
public goldMoca() {
this.cafeebean = "원산지 : 페루산";
}
void changebean() {
this.cafeebean = "원산지 : 한국산";
}
}
public class MyUpCasstingEx_1 {
public static void main(String[] args) {
//----다운 케스팅 ----
System.out.println("----다운 케스팅----");
caffee goldMocaA = new goldMoca();
// goldmocaA를 caffee로 생성하고 goldMoca로 형변환(다운케스팅)을 시킨 코드를 축약 한것이다.
// ㄴ 이 코드가 갖고 있는 의미는 변수는 슈퍼 클레스 것을 사용하지만 메소드는 형변환 시킨 클레스(서브 클레스)것을 사용 한다는 것이다.
// ㄴ 슈퍼 클레스의 변수 + 서브 클레스(형 변환된 타입)의 메소드 조합으로 사용 한다는 것이다.
goldMocaA.changebean();
System.out.println(goldMocaA.cafeebean);
// 다운 케스팅 했기 때문에 서브클레스의 메소드가 실행 되었다.
// System.out.println(goldMocaA.instance);
// ㄴ 생성을 수퍼 클레스로 생성 했기 때문에. 서브 클레스로 형변환 해도 서브 클레스의 변수는 갖고 있지 않다.
System.out.println(goldMocaA.sugar);
// ㄴ 서브클레스와 슈퍼 클레스에 동일한 이름의 변수가 있어도 . 메서드와 다르게 변수는 슈퍼 클레스의 변수이다.
//----업 케스팅----
System.out.println("----업 케스팅----");
goldMocaA.changebean(); // 다운 케스팅 상태에서 메소드가 오버라이드 된 서브 클레스의 메소드가 실행 되었다.
System.out.println(goldMocaA.cafeebean);
System.out.println("----새로운 인스턴스에 다운케스팅 했을때 참조 주소값----");
// 새로운 서브 클레스의 인스턴스에 다운케스팅 했을때 참조 주소 실험
goldMoca goldmocaB = new goldMoca();
goldmocaB =(goldMoca)goldMocaA;
System.out.println(goldmocaB.cafeebean);
goldmocaB.eat();
// 결론 : 메서드는 형변환된 타입의 메서드가 실행 되지만. 변수는 처음에 생성된 클레스의 변수를 유지한다.
}
}
Super Test Code
MySuperEx_1
package superEx;
public class MySuperEx_1 {
public static void main(String[] args) {
SubA A = new SubA(10);
System.out.println(A.intA);
}
}
SubA
package superEx;
public class SubA extends SuperA {
SubA(int number){
super(number);
super.print();// super클레스 내부의 메소드 사용가능.
super.intA =3;
}
}
SuperA
package superEx;
public class SuperA {
int intA ;
SuperA(int number){
this.intA = number;
}
void print() {
System.out.println("Super print");
}
}
constructer : 생성자 ( 매번 기억하기 힘든 단어 ^^;)
챕터 4
오버라이드
- 서브 클레스에서 메서드 이름을 슈퍼 클레스와 똑같이 하면 서브클레스의 메서드가 가동 된다.
- 메서드의 정의 부분을 데피니션 혹은 펑션 시그니쳐 라고도 한다.
- annotation 애노테이션 : @overriding같은 컴파일러에 보내는것
- c++은 형변환 후에 가상메서드로 선언을 해야 메서드의 사용이 가능하지만 .자바는 모든 메서드가 가상메서드이고 메모리 영역에 저장되는 공간이 변수와 독립되어 있기 때문에. 그냥 사용이 가능함.
복습 & 실무적인 사용방법
전문 용어
에러 메세지
학습 시간
캠 스터디
공부 모임
1) 카카오톡 오픈 채팅방
- 모르는것을 질문하거나
- 이해가 가지 않는 부분을 다른 분들의 블로그에서 참고하기 용도
2) 구루미 온라인 독서실
- 학습 시간을 관리 하거나 경쟁 하는 용도
온라인 강의 주소
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'학습방법 > 데일리 미션' 카테고리의 다른 글
[ 패스트캠퍼스 챌린지 10일차 ] 3:1:01 ~ 3:1:13 (0) | 2022.02.02 |
---|---|
[ 패스트캠퍼스 챌린지 09일차 ] 3:1:05 ~ 3:1:07 (0) | 2022.02.01 |
[ 패스트캠퍼스 챌린지 07일차 ] 3:1:15 ~ 복습 (0) | 2022.01.30 |
[ 패스트캠퍼스 챌린지 06일차 ] 3:1:14 ~ 복습 (0) | 2022.01.29 |
[ 패스트캠퍼스 챌린지 05일차 ] 3:1:13 ~ 복습 (0) | 2022.01.28 |