객체참조
//참조형
//c2 = c1 ; c2가 c1의 풍선(값)을 가리킨다. c1과 값을 공유한다
System.out.println("____________");
Camera c1 = new Camera();
Camera c2 = new Camera();
c1.name = "카메라1";
c2.name = "카메라2";
System.out.println(c1.name);
System.out.println(c2.name);
c2 = c1; //c2가 c1의 값을 grab!!! c2와 c1이 값을 공유
System.out.println(c1.name);
System.out.println(c2.name);
c2.name = "고장난 카메라"; //c2만 바뀌어도 c1 값이 바뀜. 왜냐? 값을 공유하니까!
System.out.println(c1.name);
System.out.println(c2.name);
System.out.println("____________");
changeCamera(c2);
System.out.println(c1.name);
System.out.println(c2.name);
System.out.println();
c2 = null; // 풍선 손 놓기!
// System.out.println(c2.name); // NullPointerException 오류 뜨면서 출력 불가
public static void changeCamera(Camera camera){
camera.name = "잘못된 카메라";
}
//카메라1
//카메라2
//카메라1
//카메라1
//고장난 카메라
//고장난 카메라
c1과 c1가 같은 풍선(값)을 잡고 있다
= c1과 c2가 같은 값을 공유하고 있다
결국 c1과 c2는 같은 객체를 참조하므로 하나의 객체의 속성을 변경하면 다른 객체의 속성도 변경되는 것을 확인할 수 있습니다.
이는 객체 참조의 특징으로 인한 결과입니다.
// 4종류의 베이비 객체를 만든다
Baby superBaby = new Baby();
Baby pyschoBaby = new Baby();
Baby attentionBaby = new Baby();
Baby adhdBaby = new Baby();
// 부모 객체를 만든다
Parent parent = new Parent(); // 기본 부모
Parent superBabyParent = new Parent(superBaby); // 슈퍼베이비 Lv0 부모
ElementaryParent elementaryParent = new ElementaryParent(superBaby); // 슈퍼베이비 Lv1 초딩부모
MiddleParent middleParent = new MiddleParent(superBaby); // 슈퍼베이비 Lv2 중딩 부모
UniversityParent universityParent = new UniversityParent(superBaby); // 슈퍼베이비 Lv3 대딩 부모
superBaby.levelUp(superBaby);
//레벨별로 기능을 나눔
if(superBaby.getLevel() == 1){
//주의! superBabyParent = elementaryParent;
// superBabyParent 에 존재하지 않지만, elementaryParent에 는 존재한 속성 이 있어, 그 속성이 새로 superBabyParent에 생겨나는 건 아니지? 이미 기존에 존재하는 속성에 대한 값만 elementaryParent;로 대체됨
} else if (superBaby.getLevel() == 2) {
} else if (superBaby.getLevel() ==3) {
}
superBaby.printBabyTotalScore();//아이의 점수를 불러온다
superBabyParent.showUserProfile(); //유저의 상태(돈,시간)를 보여준다
superBabyParent.keepDoing();
userStayPick = scan.nextInt(); //계속 살거냐고 질문함
}
'Java' 카테고리의 다른 글
나의 나쁜 코딩 습관 정리하기 (0) | 2023.09.07 |
---|---|
enum 클래스 vs List 클래스 vs Map 클래스 (0) | 2023.08.30 |
자바 별찍기 - 원모양 만들기 (feat.원의 방정식) (0) | 2023.08.19 |
자바 별찍기 - 마름모 만들기 (0) | 2023.08.18 |
스캐너(Scanner) : java의 입력기능 (0) | 2023.08.13 |