-> 첫번째 컵 내용이 비어있음
-자바의 난이도 (어려운 구간)
-> coffee의 자식, coffee의 일종
-> coffee로 값을 전달하는 setter, getter만들기
-> 자동으로 해주는 라이브러리도 있음
상속관계 이용해서 americano, latte 모두 coffee 타입으로 만들어줌
americano, latte를 전달받는 파라미터 coffee
(객체안에 객체를 전달해서 담는 과정)
->(ex) 스타크래프트 (섞어서 )
(ex) 버스에 학생, 알바생도 타고
marine Firebat 이 싸운 것
둘중한명 죽을때까지 싸우자 : 언제 죽을지 모르니까 -> while
-> 둘다 살아있으면
싸우는것도 순서가 있어야함
unit1 이 나라고 보고
myTurn 바꾸기 한번 할때마다(아니면 한놈만 팬다)
-> 부정연산(!느낌표- 반대로 바꾸는것)
false로 했으니까 unit2가 선방 날리고 unit1이 날리고 ~
기준 : 둘다 살아있으면 하는것 , 둘중 하나 죽으면 끝나는 것
-> Flag 변수 : 청기올려 내려 : 상태가 둘 중 하나 (ture or false)
-> unit1이 살아있으면) 승리한 것
marine 의 공격력 : final int
에너지 단위 : 50,100 정수 형태로
공격할때마다
-> getter이름 예측
-> getter 임 isAlive라고 만들어진 이유 : boolean타입이라서( Alive라고 해도 똑같은 결과 나옴)
GameUnit이 name을 관장하고 있음
에너지 100 줬는데 죽었다고 하면 틀린것-> 애초에 막기위해서 (pulbic -> private변경)
-> hp가 0보다 크면 setAlive에 true -> true
-> 파라미터 1개(이름만 받아오는것)
marin은 gameunit이 가진 name그대로 쓸 수 있다는 뜻
-> super클래스에 의해서 동작
unit1,2 가 attack을 불를 수 있다.
GameUnit에있는 메소드를 호출할 수 있다.
모든 GameUnit이
power차이를 둠
power을 marine , firebat에 나눠놓음
marine 은 marine의 공격 구현, firebat은 firebat공격을 구현
other 상대편 hp 를 떨어뜨리는 것 : POWER 만큼
원래 가지고 있던 에너지만큼 줄어들게 ~ other.getHp
HP 바닥 0 -> 0보다 낮아지는 것도 가능해짐
(EX) 1남았을때 10짜리 공격맞으면 -9가 아니라 0이다.
-> 나는 unit1, 공격할 상대방 unit2
-> hp 도 0이되고 alive도 false가 됨
-> 부모(gameunit - getname있고 이름 마린)
-> 마린은 5씩 줄어들음
unit1의 공격대상 other
-> 공격순서
boolean myTurn = true; 바꾸면
-> upcasting 가능: super클래스 타입
-> 개체, 변수 앞에 바꾸고 싶은 타입 적으면 ) casting
오버로딩 도움안받고 호출하기!
-> p1을 student로 바꾸는 거 제일 먼저하기
-> 아까 이거 안되서 오버라이딩 했던 것
-> person에 study 넣어버림
person은 eat, sleep 만하고 student는 study만 해
-> student를 worker로 바꾸기(말이 안되는상황)-> 실행하면 안됨
-> 형변환 잘못되었다는 것
-> a가 b타입의 instance인가?
-> true나옴
-> ture 나옴
-> false나옴
casting하기 전에 if로 돌림 student면 student로 casting
,worker면 worker로 casting
1.안전
2. 코드 자동완성 됨
-> student이면
-> student의 내용을 보여줌
-> 어차피 casting은 해야함
-> p1을 먼저 student로 바꾸고 study 호출하기
(결론) 우리가 알고 있는것과 같다(무조건 캐스팅해줘서 잘못될 우려있음)
casting하기전) instanceof로 맞는지 확인해라
(( 가로 2개 ))
instanceof 안하고 그냥 casting해도 됨
: 데이터를생성할때 값을 넣든, getter,setter로 하든
값을 넣은 객체를 네트워크 상에서 주고받는것
-> 모두 가지고 있음
Person의 부모 -> Object 클래스있음
모든 자식은 부모타입으로 저장 가능(upcasting)
-> 결론) 모든 객체는 Object로 저장할 수 있음(아무조건없어도)
막 쓰면 안됨
Obejct p = new Person 이렇게 저장하면 저장은 되겠지만
object로 저장하면 object만 보임
-> person의 메소드 하나도 보이지 않음
upcasting시) Person으로 저장하면 Person의 메소드가 보임(해결하려고 overriding, downcasting한것)
-> 값을 저장하는 변수 선언시) 문자열 저장할때, 정수 저장할 하나의 변수 필요할 때 있음(그때 타입은 object로 잡음 )
실무 대부분) overriding으로 해결
object ) downcasting 으로 해결
-> object클래스가 가지고 있는 메소드만 보여줌