목차
회차 | 일정 | 시간 | 주제 | 상세내용 |
---|---|---|---|---|
10 | 2023.02.28(화) | 3 | 스프링 이해를 위한 자바 고급 -2 | - 컴퍼지션 실습 |
- 햄버거 세트 만들기
package ex01;
class 지구인{
String name = "지구인";
}
class 아시아인 extends 지구인{
String name = "아시아인";
}
class 아프리카인 extends 지구인{
String name = "아프리카인";
}
class 일본인 extends 아시아인{
String name = "일본인";
}
class 한국인 extends 아시아인{
String name = "한국인";
}
class 소말리아인 extends 아프리카인{
String name = "소말리아인";
}
/**
* 타입에 따라 변수를 찾아간다.
* 상속을 통해 메모리 구조를 디자인할 수 있다.
*/
public class MemEx01 {
public static void main(String[] args) {
한국인 n1 = new 한국인(); // (한국인) - 아시아인 - 지구인
System.out.println("타입 한국인 : " +n1.name);
지구인 n2 = new 한국인(); // 한국인 - 아시아인 - (지구인)
System.out.println("타입 지구인 : " +n2.name);
지구인 n3 = new 소말리아인(); // 소말리아인 - 아프리카인 - (지구인)
System.out.println("타입 지구인 : " +n3.name);
}
}
class 아시아인 extends 지구인{ // new 아시아인() -> 아시아인, 지구인
String name = "아시아인";
}
아시아인은 한국인이 아니다. → 다형성 성립하지 못한다.
한국인이 아시아인인것은 맞지만 아시아인이 한국인인건 아니다.
바라보고 있는 타입으로 뜰 것이다.
메서드는 좀 다른걸로 알고 있다. → 이후 오버라이딩에 대해 설명
package ex02;
/**
* 지구인 : 걷는다 (행위 특징), 말한다 (행위 특징)
* 아시아인 : 황색피부 (상태 특징)
* 아프리카인 : 검정색피부 (상태 특징)
* 일본인 (Object) : 일본어로 말한다 (행위 특징)
* 한국인 (Object) : 한국어로 말한다 (행위 특징)
* 소말리아인 (Object) : 소말리어어로 말한다 (행위 특징)
*/
class 지구인 {
public void walk() {
System.out.println("걷는다");
}
public void speak() {
// ? 어떻게 말하는지 구체적인 것은 모르겠어!
}
}
class 아시아인 extends 지구인 {
String skin = "황색피부";
}
class 아프리카인 extends 지구인 {
String skin = "검정색피부";
}
class 일본인 extends 아시아인 {
public void speak() {
System.out.println("일본어로 말한다");
}
}
class 한국인 extends 아시아인 {
public void speak() {
System.out.println("한국어로 말한다");
}
}
class 소말리아인 extends 아프리카인 {
public void speak() {
System.out.println("소말리아어로 말한다");
}
}
/**
* 타입에 따라 변수를 찾아간다.
* 상속을 통해 메모리 구조를 디자인할 수 있다.
*/
public class MemEx02 {
/* public static void start() {
한국인 obj = new 한국인(); // (한국인) - 아시아인 - 지구인
System.out.println(obj.skin);
obj.walk();
obj.speak();
}*/
/* public static void start(한국인 obj) {
System.out.println(obj.skin);
obj.walk();
obj.speak();
}*/
/* public static void start(아시아인 obj) {
System.out.println(obj.skin);
obj.walk();
obj.speak(); // 동적바인딩
}*/
public static void start(지구인 obj) {
//System.out.println(obj.skin); // 안됨!!
obj.walk();
obj.speak(); // 동적바인딩
}
public static void main(String[] args) {
// step1
/* 한국인 obj = new 한국인(); // (한국인) - 아시아인 - 지구인
System.out.println(obj.skin);
obj.walk();
obj.speak();*/
// step2
/*start();*/
// step3
/*start(new 한국인());*/
// step4
/*start(new 일본인());*/
// step5
start(new 소말리아인());
}
}