본문 바로가기
[ JAVA ]/JAVA

[ Java ] 클래스와 객체1

by 환이s 2022. 11. 25.
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 생성자 )

 

singleton 예시

 

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

 

getter , setter

 

3. tostring 

 

tostring

 

4. main

 

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