클래스의 구조
■ 클래스의 선언
클래스의 선언부와 몸체로 나뉘고 몸체에는 클래스의 멤버가 선언된다.
클래스 멤버 구성
- 생성자(Constructor) : 객체의 초기화를 담당
- 멤버 변수(Variable) : 클래스가 가지는 속성을 정의
- 메서드(Method) : 클래스가 가지는 데이터를 조작하고 반환
클래스 Modifier
- 접근 권한 예약어 : public, protected, private, (default)
- 활용 방법 예약어 : final abstract, static, transient, volatile, syncornized, native
객체 생성
Car Yellow;
Yellow = new Car();
- new예약어를 사용하여 객체가 사용할 메모리 영역 할당
- 생성된 객체에 대한 참조값이 선언된 객체 참조 변수에 할당
멤버 변수의 선언
[modifier] 데이터타입 변수이름;
- modifier : 변수에 대한 접근권한이나 활용 방법 제어
- modifier 미지정 시 같은 패키지 내의 클레스에서만 접근이 가능한 객체 변수
Modifier | 설명 |
---|---|
public | 모든 클래스에서 접근이 가능함을 의미 |
protected | 동일 패키지에 속하는 클래스 또는 하위 클래스 관계의 클래스에 의해 접근이 가능하다는 의미 |
private | 변수가 선언된 클래스 네에서만 접근이 가능함을 의미 |
final | 변수를 상수로 이용하는 경우 사용 ( 변경이 불가능함을 의미 ) |
static | 클래스에 소속된 클래스 변수를 의미 일반적으로 클래스 변수라고 함. |
종류 | 클래스 | 하위 클래스 | 동일 패키지 | 모든 클래스 |
---|---|---|---|---|
private | O | X | X | X |
(default) | O | X | O | X |
protected | O | O | O | X |
public | O | O | O | O |
접근 제한자를 통해 정보 은닉 구현 가능
메서드 정의하기
- 메서드 시그니쳐(Signature) : 반환형, 메서드명, 매개변수
메서드 구성요소
요소 | 설명 |
---|---|
접근 제한자 (Access Modifier) |
접근 제한 시 사용되는 키워드, 생략 가능(default) |
반환형 (Return_type) |
메서드가 수행되고 결과로 리턴되는 타입 기본형, 참조형 모두 올 수 있으며 리턴값하지 않으면 void로 선언 |
메서드명 | 식별자(Identifier)의 규칙에 따라 프로그래머가 명시 |
매개변수 (Parameter) |
메소드 수행 시 전달되는 인자의 타입과 변수명으로 존재 각 인자는 쉼표로 구분, 인자를 갖지 않으면 '()'를 빈 채로 둠 |
메서드 Modifier
- 접근 권한 : 멤버변수와 동일
- 활용 방법
Modifier | 설명 |
---|---|
final | Overriding이 불가능한 메서드를 정의할 때 이용 |
static | 클래스에 소속된 클래스 메서드를 의미, 클래스 생성 시 만들어짐 |
abstract | 추상 메서드를 의미, 하위 클래스에 의해 구현됨 |
synchronized | Thread의 동기화를 위한 메서드 |
접근관련 Modifier를 이용해 정보 은닉 구현 가능
메서드의 자동 구현 <Eclips 한정>
- 멤버 변수들은 대부분 private로 선언해서 외부에서는 숨겨진 형태로 만듦
- Getter / Setter 메서드를 이용해 접근할 수 있도록 클래스를 구현
- Getter / Setter 자동 구현: Alt + Shift + S -> Generate Getters and Setters
- toString() 메서드 자동 구현 : Alt + Shift + S -> Generate toString();
[참고] : SWExpertAcademy
'Etc.. > SWExpertAcademy' 카테고리의 다른 글
[Java Programming] 객체지향 핵심 원리(4) (0) | 2021.07.17 |
---|---|
[Java Programming] 객체지향 핵심 원리(3) (0) | 2021.07.17 |
[Java Programming] 객체지향 핵심 원리(1) (0) | 2021.07.12 |
[Java Programming] 자바언어의 구조와 기본문법 (4) (0) | 2021.07.11 |
[Java Programming] 자바언어의 구조와 기본문법 (3) (0) | 2021.07.05 |