▶ 클래스
- 객체를 만들어내기 위해 정의된 설계도, 틀
- 클래스는 객체도 실체도 아님
- 멤버 변수와 멤버 함수 선언
▶ 객체
- 객체는 생성될 때 클래스의 모양을 그대로 가지고 탄생
- 멤버 변수와 멤버 함수로 구성
- 메모리에 생성, 실체(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 |
댓글