코드 그라데이션
자바 퀴즈 아이디어 정리 (1) 본문
1.
- 올림픽게임과 살짝 비교해서 보면 좋을 듯
- 올림픽은 국적을 필드에 놓는 것을 고려할 수 있다고 보면,
선수의 국적이 달라질 때, 선수의 행동이 달라지거나 가질 수 있는 값이 달라지진 않는다.
- 그런데 포켓몬은?
피카츄와 파이리가 종족이 달라지면 서로 다르다(공격력 능력치, 회복력 등...)
=> 이럴 때는 다른 클래스로 만드는 게 효율적일 듯
- 만약 피카츄, 파이리 꼬북이가 그냥 별칭에 불과하다면, nickname이라는 필드 변수로만 선언해놔도 무방하겠지.
2.
- 이 문제는 사실
두 개의 차이를 아느냐 묻는 문제
Person person;
Person person = new Person();
- 위는 사람을 가리킬 수 있는 화살표가 만들어진 것이고(연결 x)
- 아래는 new를 한 시점에 실제 객체가 만들어진 것.
- 물건이 팔렸을 때, null이 남아있다(nullChange)는 사실이 매우 중요함.
- 문방구에서 팔렸으면 문방구에서는 null이지만, 학생의 필통에는 객체가 들어간다는 사실!
3.
- 선수 클래스를 하나 만들고, 객체를 네 개 만들어서 레인번호 / 국적으로 차별화
- 그런데 항상 1번레인에 한국 선수가 올 거라는 보장은 없다.
<해결책>
1. 선수별 클래스 생성
2. 선수 클래스는 하나만 만든 다음에, 나라를 필드로 선언해서 구분
(나머지 구성요소는 동일하여 굳이 선수별로 클래스를 만들 필요가 없다고 판단된다면.)
- 주사위 문제와 동일
4.
- 클래스 내부에서 static과 non-static의 차이를 알고 있느냐가 중요한 문제
* static은 객체를 만들지 않아도, 클래스에 . 찍고 바로 값을 가져올 수 있음
* non-static은 객체를 만들어야만이 활용 가능함.
- 동물이 음식을 가진다고 하면 얘는 non-static이어야.
6.
- 동물이라는 클래스에서 private한 필드를 가지고 있다고 치고, 개, 고양이, 새가 동물을 상속받는다고 하자
- 이 때 상속받아도 private는 못 본다는 것 유의
- 클래스라면 반드시 가져야할 함수 : 생성자
=> 그런데, 동물이라는 클래스 자체가 객체로 만들어질 필요성이 있는가를 잘 생각해봐야.
(현실에서 강아지, 고양이는 있어도 "동물"이라는 존재는 없으니까...)
=> 그래서 동물클래스는 추상클래스로 만드는 게 좋을 듯.
7.
- 이것은 상속문제 아님
- 문제에서 요구하는 바대로 하면 될 듯.
8.
- 전형적인 getter, setter 활용 문제
- 물을 10개씩 효율적으로 쪼개기 위해 물 배열을 2차원으로 만드는 idea.
9.
- 생성자에서 super() 활용
- 오버라이딩 개념
- 함수 인자로 객체가 들어가는 idea.
10.
- 상속 문제 아님.
- 왼쪽 -> 오른쪽 이동 시에는 순차적 이동
- 오른쪽-> 왼쪽 이동 시에는 첫 번째 칸은 왼쪽->오른쪽 이동이라는 idea.
11.
- 컴퓨터, 에어컨, 냉장고, 공기청정기가 한꺼번에 Product 타입으로 묶일 수 있구나!
- 부모 타입의 참조변수에는 자식 타입의 객체가 들어갈 수 있다.
- 그러나 자식 타입의 참조변수에는 부모 타입의 객체는 들어갈 수가 없다!!!
- 객체가 뭔지가 중요하면 instanceof 활
12.
- ArrayList 사용하니 배열의 크기를 자유롭게 만듦.
- get으로 요소를 가져와서 equals로 비교
- 여기서는 상품 구매 로직이 전부 사라져도 됨.
13.
- 특수한 문제
- 누가 죽었는지 확인(hp<=0)
14.
- new Dog(color[colorRandom]) 요런 식의 발칙한 아이디
15.
- 탈 것도 개념적인 구현체라고 볼 수 있어서 추상클래스화 하면 좋을 듯.
- 추상클래스는 필드를 가질 수 있음.
- 오버라이딩의 조건 : 상속, 메서드 시그니처(이름, 매개변수)가 동일해야 함
16.
'Java > Mega' 카테고리의 다른 글
자바 퀴즈 아이디어 정리 (3) (0) | 2023.05.07 |
---|---|
자바 퀴즈 아이디어 정리 (2) (0) | 2023.05.07 |
Day33-34. 자바 GUI (0) | 2023.05.07 |
Day32. 네트워크 (3) 예제 (0) | 2023.05.06 |
Day32. 네트워크 (2) TCP / UDP (0) | 2023.05.06 |