728x90
CHAPTER 07. 클래스와 객체 알아가기
오늘은 이전 포스팅에서 빠짐없이 사용한 Object를 포스팅하려고 한다.
Object(객체) 란?
- 세상의 모든 것이 객체(Object)이다.
- Object는 속성(Properties)과 행동(Behavior)을 갖는다.
- Object는 상속(유전) 될 수 있다.
- Object의 정의는 Class 키워드로 한다.
- Object가 살아있을(존재할, new) 때, 이것(this)을 instance라 한다.
- Object는 비밀을 가질 수 있다.
1 ) 객체지향 프로그래밍 특징
- 추상화(Abstraction) - 실제 세상을 프로그래밍으로 옮길 수 있게, 필요한 기능들만 가져와서 단순화
- 캡슐화(Encapsulation) - 보안적인 기능에 도움을 준다. 사용 용도는 명확하게 해야 하고, 안에 있는 값을 노출하지 않는다.
- 상속성(Inheritance) - 부모를 지정하고, 부모의 코드를 가져다가 쓸 수 있는 것이다. 한마디로 코드의 재사용성.
- 다형성(Polymorphism) - 변수가 여러 가지 모습으로 변할 수 있는 것.
1 ) Class
사물 하나 하나를 기능별로 묶어서 사용하는 것이다. 각 클래스 안에서 역할에 따라 각 클래스의 기능을 서술해 나간다.
같은 프로그램을 만들더라도, 여러 가지 간점으로 만들 수 있다. 또한 다른 클래스에서 다른 클래스를 선언하여 사용할 수 있다.
public : 자유롭게 사용 가능
private : 같은 클래스 내에서만 호출 가능, 외부에서 참조하지 못하게 할 때 사용한다.
default : 다른 패키지에서 참조 불가
protected : 다른 패키지에서 참조 불가. but, 다른 패키지에 있더라도 상속 시 사용할 수 있다.
1-1 ) 구조
- 멤버변수 : Class 안의 기능을 끄집어내서 사용할 때 사용한다.
- Method : 기능을 나타내고 항상 ()가 붙어있다.
- Constructor(생성자) : 처음에 값을 넣어줄 때 사용한다.
2 ) Class vs Instance
- Class == 붕어빵 틀 , 사람 , 정의(명세)
- Instance == 붕어빵 , 홍길동 , 실존(생성)
Ex) Person hong = new person("홍길동");
Class : Person ( Method Area ) Instance : hong ( Stack Area( Java stacks ) )
Method Area
- Class, 변수, 함수 명세(정보)
- static 변수
- date 영역
Stack Area( Java stacks )
- 변수, 함수
Heap Area
- Instance Pool
- GC의 대상
3 ) this & static
- this : 자신(self) , 자신의 메모리 위치(주소)
- static : Method Area 에 생성 , 오직 1개만 생성 , 모든 Instance가 공유
4 ) Singleton
- 단 한번만 생성 ( static )
- 아무나 생성시킬 수 없음 ( private 생성자 )
5 ) getter & setter & tostring
- getter : private member 변수의 값을 Get(읽는) 하는 함수
- setter : private member 변수의 값을 Set(쓰는) 하는 함수
- tostring : 현재 Instance의 properties를 string으로 반환하는 함수
Ex)
//Man class의 instance인 hong과 john이 각각 10,000원이 있었다.
//hong은 coffee(3,000원) 1잔과 도넛(2,500원) 2개를,
//john은 coffee(3,000원) 2잔과 도넛 1개를 사 먹었다고 했을 때,
//hong과 john의 남은 돈은 각각 얼마인지 출력하시오.
//멤버 변수
// - name(이름), amount(잔액)
//멤버 함수
// - Man() : 생성자 함수 - 초기 잔액을 10,000원으로 Set!!
// - buyCoffee(int count), buyDonut(int count)
1. 고정 값 설정
2. getter , setter
3. tostring
4. main
tip )
1. Class 출력 시 함수명 private로 설정하기(int, string 확인 )
private를 public 동기화 ( public [함수명] ) (string(int) , name)
this.name(private) = name;(public)
2. get, set 하기 -> 필요시 sub 함수 만들어서 출력 후 -> tostring -> main에 표출 -> 함수명.a = new 함수명("홍길동")
마치며
오늘은 클래스와 객체 포스팅을 했습니다. 점점 어려워지는 느낌을 받았지만 하나씩 천천히 클리어하면 그만큼 뿌듯함을 느낄 겁니다.
다음 포스팅에서 뵙겠습니다~:)
728x90
'[ JAVA ] > JAVA' 카테고리의 다른 글
[ Java ] 배열 (0) | 2022.12.04 |
---|---|
[ Java ] 클래스와 객체2 (0) | 2022.11.30 |
[ Java ] Method (0) | 2022.11.23 |
[ Java ] 반복문 (2) | 2022.11.22 |
[ Java ] 조건문 (0) | 2022.11.14 |