
1. 객체 (Object) 란?
* 존재할 수 있는 모든 것들. 존재 가능성이 있는 모든 것들 * 프로그램에서는 new해서 메모리에 띄울 수 있는 모든 것들을 객체라고 본다. * 모든걸 부품화 시켜서 결합 = 다 따로따로 만들어서 완제품으로 결합
예시 보기

class Person3는 클래스라고도 부르고, 객체(오브젝트)라고 한다. Person3 p3 = new Person3(); 도 객체(오브젝트)라고 한다. * new된 것도 오브젝트, new가 가능한 모든 것들도 오브젝트. * 객체는 클래스(Class)라는 템플릿을 기반으로 생성되며, 클래스의 인스턴스라고도 할 수 있다.
* public 클래스는 하나의 페이지에 2개 이상 쓰지 말자
* 같은 패키지에 같은 이름의 클래스가 있을 순 없다. 중복x

2. 객체의 원칙 ★
원칙 1) 객체는 상태(state)와 행위(behavior)를 갖는다. 상태(필드)는 변수이며, 행위(메서드)를 통해서만 변경 가능하다.
[접근 제어자]
public 어디에서든 접근 가능 private 어디에서도 접근 불가능 * 상태(변수) - 내부 데이터를 훼손시키지 않기 위해서 변수는 private * 행위(메소드) - 모두에게 공개한다. public
2-1. 잘못된 코드

문법적으론 맞지만, 쓰면 안되는 잘못 된 코드! 상태(필드)의 데이터는 훼손되어서는 안되기 때문에! main에서 마음대로 변경할 수 없다!!
2-2. 올바른 코드

상태(변수)값에 private를 이용해 다른 클래스에서 접근 못하게 막는다. = 값 변경도 불가능. public 메소드를 이용해 exercise를 통해 우회적으로 weight로 접근, 값을 바꾼다. 단, private는 접근 금지 상태이기 때문에 main에서 p4.weight로 값을 불러오지 못한다. 이때 값을 확인할 수 있는 메소드를 따로 만들어 줘야한다.
메서드는 자판기로 비유하면 쉽다.
- 고기집 자판기 : 입력(동전)은 없는데 출력(커피)(return)은 있음
- 일반 자판기 : 들어가는 것도 있고, 나오는 것도 있고
- 오락실 자판기 : 입력(동전)은 있는데 출력 (튀어나오는 것)은 없음
> 이걸 매개변수와 return에 비유해서 설명
2-3. 값을 확인할 수 있는 메소드 생성

정상적으로 getWeight() 메소드가 호출된 것 확인

p4.exercise(); 메소드를 호출할 때마다 weight 변수값이 바뀜 (90 > 80 > 70 ...)

for문으로 돌려서 0kg까지 만들어줌.
Share article