오브젝트(객체)
- 객체란 실존하는 물체나, 개념 중 자신만의 영역을 가지고 다른 것과 구분되는 것을 뜻합니다.
- 객체는 속성과 기능으로 구성됩니다.
- 속성: 객체의 분류나 특징을 정의한 것으로 필드(field)라고도 합니다.
- 기능: 객체의 동작이나 행위를 정의한 것으로 메서드(method)라고도 합니다.
클래스
- 클래스란 객체지향 프로그램에서 객체를 생성할 때 사용하는 일종의 틀(frame) 입니다.
- 클래스를 활용하여 같은 특징을 가진 객체를 계속 생성할 수 있습니다.
- 클래스로부터 생성된 객체를 해당 클래스의 인스턴스(instance)라고 합니다.
인스턴스
- 인스턴스란 클래스를 통해 생성된 객체의 구현체라고 할 수 있습니다.
- 인스턴스는 해당 클래스의 자료형의 변수에 생성되어 메모리에 할당됩니다.
- 어떠한 추상적인 개념으로부터 실체화된 것이라는 넓은 의미로 사용되기도 합니다.
클래스의 구성 요소
- 필드(Field) / [속성]
- 오브젝트의 분류, 상태 등 오브젝트를 정의하기 위한 데이터를 기술한 요소입니다.
- 클래스가 포함하고 있는 변수(= 인스턴스 변수)입니다.
- 클래스의 필드 데이터는 힙 메모리에 저장됩니다.
- 메서드(Method) / [기능]
- 오브젝트의 기능을 구현하기 위한 명령을 기술한 요소입니다.
- 클래스가 포함하고 있는 함수(= 인스턴스 메소드)입니다.
- 클래스의 메서드는 메모리의 클래스 영역에 저장되어 불러와집니다.
- 컨스트럭터(Constructor) / [생성자]
- 인스턴스를 생성하는 역할을 하는 요소입니다.
- 인스턴스가 생성될 때 인스턴스 변수를 초기화하는 일종의 메서드입니다.
- 컨스트럭터는 반드시 클래스의 이름과 같아야 하며, 별도로 리턴을 선언하지 않습니다.
(하지만 리턴값이 없음을 뜻하는 void 키워드는 사용하지 않음)
자바에서의 클래스 사용 문법
- 클래스의 구조
클래스의 기본 구조
// 클래스 선언 부분
접근제어자 class 클래스이름 {
// 클래스 필드 선언 부분
// 필요한 경우 특정 데이터의 초기값을 설정할 수 있음
접근제어자 자료형 변수이름;
접근제어자 자료형 변수이름 = 초기값;
// 클래스 컨스트럭터 선언 부분
접근제어자 클래스이름(매개변수) {
// 매개변수의 데이터를 입력하는 부분
// 매개변수가 없을 경우 생략 가능
this.매개변수 = 매개변수;
}
// 클래스 메서드 선언 부분
접근제어자 반환타입 메서드이름(매개변수) {
// 메서드의 로직을 입력하는 부분
// 매개변수가 필요 없을 경우 생략 가능
메서드 동작 코드;
}
}
- 클래스의 접근제어자가 public일 경우는 소스 파일(.java 파일)과 이름이 동일해야 합니다.
(접근제어자란 클래스 정보 접근을 조정해주는 기능을 제공하는 키워드) - 한 소스 파일에 여러 개의 클래스를 생성할 수 있지만 public 클래스는 한 소스파일 당 하나만 생성 가능합니다.
클래스의 구조 예시
클래스의 구조 예시
// 클래스 선언 부분
public class Student {
// 필드 영역 선언 부분
// 학생의 정보 부분
private int studentID;
private String studentName;
private int studenthHeight;
private int studentWeight;
private int score;
private char studentGrade;
private int PocketMoney;
// 컨스트럭터 영역 선언 부분
// 기본 컨스트럭터
// (기본 컨스트럭터는 컴파일러가 자동으로 생성)
public Student() {
}
// 매개변수를 가지는 컨스트럭터
// 학생ID와 학생이름을 가지는 컨스트럭터
public Student(int studentID, String studentName) {
this.studentID = studentID;
this.studentName = studentName;
}
// 메서드1
// 학생이 학교로 가는 메서드
public void goToSchool() {
System.out.println("학교에 갑니다!");
}
// 메서드2
// 성적을 체크하는 메서드
public getGrade(int score) {
if(score >= 90) {
studentGrade = 'A';
}
else {
studentGrade = 'F';
}
return studentGrade;
}
// 메서드3
// 용돈을 받는 메서드
public recivePocketMoney() {
pocketMoney += prizeMoney;
System.out.println("용돈을 받았습니다!");
}
}
'Programing Language > Java' 카테고리의 다른 글
[Java] 클래스의 구성 요소(Member of Class) (0) | 2022.06.11 |
---|---|
[Java] 인스턴스의 생성과 활용(Create & Using Instance) (0) | 2022.06.10 |
[Java] 다차원 배열(Multi-dimensional Arrays) (0) | 2022.06.02 |
[Java] 자바의 배열(Arrays) (0) | 2022.05.26 |
[Java] 자바 프로그램 기본 실행 과정(Java Program Basic Runtime) (0) | 2022.05.22 |