c23 [Java] 클래스와 객체 (캡슐화)
본문 바로가기
[Java]

[Java] 클래스와 객체 (캡슐화)

by Jarvis2304 2022. 12. 28.

▶ 클래스

- 객체를 만들어내기 위해 정의된 설계도, 

- 클래스는 객체도 실체도 아님

- 멤버 변수와 멤버 함수 선언

 

▶ 객체

- 객체는 생성될 때 클래스의 모양을 그대로 가지고 탄생

- 멤버 변수와 멤버 함수로 구성

- 메모리에 생성, 실체(instance, 인스턴스)라고도 부름

- 하나의 클래스 틀에서 찍어낸 여러 개의 객체 생성 가능

- 객체들은 상호 별도의 공간에 생성

 

 

ex)

클래스: 소나타 자동차       객체:출고된 실제 소나타 100대

클래스: 벽시계                   객체:집에 걸린 벽시계들

 

 

 

 

 

 

▶ 객체 사례

- 세상에 모든 것은 객체

- 객체는 캡슐화 된다

- 객체의 일부분은 공개 (ex: TV 객체의 경우 On/Off 버튼, 밝기 조절, 채널 조절, 음량 조절 노출. 리모콘 객체와 통신하기 위해)

 

▷ 객체는 상태(state)와 행동(behavior)으로 구성

 

ex) TV 객체 사례

● 상태(필드, 멤버변수)

- on/off 속성 :현재 작동 중인지 표시

- 채널 :현재 방송중인 채널

- 음량 :현재 출력되는 소리 크기

 

● 행동(메소드, 멤버함수)

- 켜기(power on)

- 끄기(power off)

- 채널 증가

- 채널 감소

- 음량 증가

- 음량 줄이기

 

 

 

 

 

▶ 사람을 사례로 든 클래스와 객체 

 

 

▷ 클래스 구성

 

 ▷ 클래스 선언

● public, 클래스 접근 전환

- 다른 클래스들에서 이 클래스를 사용하거나 접근할 수 있음을 선언

 

● class Person

- Person 이라는 이름의 클래스 선언

- 클래스는 { 로 시작하여 } 로 닫으며 이곳에 모든 필드와 메소드 구현

 

● 필드(field)
- 값을 저장할 멤버 변수 (멤버변수 혹은 필드라고함)

- 필드의 접근 지정자 public (필드를 다른 클래스의 메소드에서 접근할 수 있도록 공개한다는 의미)

 

● 생성자(constructor)

- 객체가 생성될 때 초기화를 위해 실행되는 메소드 (디폴트값 설정)

- 클래스의 이름과 동일한 메소드

- 클래스의 객체가 생성될 때만 호출되는 메소드

 

● 메소드(method)

- 메소드는 함수이며 객체의 행위를 구현

- 메소드의 접근 지정자 public (메소드를 다른 클래스의 메소드에서 호출할 수 있도록 공개한다는 의미)

 

 

 

 

 

 

 

 

▶ 객체 생성

- new 키워드를 이용하여 생성 (new는 객체 생성자 호출)

 

▷ 객체 생성 과정1

 

 

▷ 객체 생성 과정2

● 객체 멤버 접근:  객체 레퍼런스.멤버

 

 

 

  객체 생성 및 사용 예

(1) 객체에 대한 레퍼런스 변수 선언

(2) 객체 생성 - 클래스 타입 크기의 메모리 할당, 객체 내 생성자 코드 실행

(3) 객체 멤버 접근

(4) 객체 멤버 접근

 

 

 

 

 

 

예제 1) 상품 하나를 표현하는 클래스 Goods 만들기

 

 

 

예제 2) 지수 클래스 MyExp 만들기

 

 

 

 

 

 

▶ 객체 배열

- 객체 배열의 생성 및 사용

 

 

▷ 객체 배열 선언과 생성 사례

 

 

 

 

예제) 객체 배열 활용1

import java.util.Scanner;

class Book{
	
	String title;
	String author;
	
	public Book(String title, String author) {
		
		this.title = title;
		this.author = author;		
	}		
}


public class InstanceArraySample {
	public static void main(String[] args) {
		
		Book[] book = new Book[2];
		
		Scanner s= new Scanner(System.in);
		
		for(int i=0;i<book.length;i++) {
			
			System.out.print("제목 >>");
			String title = s.nextLine();
			
			
			System.out.print("저자>>");
			String author = s.nextLine();
			
			book[i] = new Book(title, author);
		}
			
		
		for(int i=0; i<book.length;i++)
			System.out.println(book[i].title + "," + book[i].author);
		
	
	}

}

 

 

 

 

예제) 객체 배열 생 활용2

 

 

 

 

 

 

 

 

 

'[Java]' 카테고리의 다른 글

[Java] 생성자, 가비지  (0) 2022.12.28
[Java] 메소드 오버로딩, this 레퍼런스  (0) 2022.12.28
[Java] 객체 지향  (0) 2022.12.27
[Java] 예외 처리  (0) 2022.12.27
[Java] 표준 입출력  (0) 2022.12.26

댓글