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) 구루미 온라인 독서실

  - 학습 시간을 관리 하거나 경쟁 하는 용도 

 

온라인 강의 주소

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

 

 

+ Recent posts