22.3.15.(화)

this, 클래스와 메서드, 상수의 이름 규칙

생성자

은닉성( getter, setter )

추천 도서 - 객체지향의 사실과 오해


1. this

1-1. 현재 클래스의 메서드를 의미하는 용도로써의 this

- 메서드의 경우 this.getName()이 아닌, getName()만 사용하더라도 코드 가독성의 문제는 없다.

1-2. this 키워드를 활용한 멤버변수와 메서드의 접근

- 멤버변수는 지역변수와 구별하기 위하여 가급적 this를 통하여 접근한다.

- 메서드에 접근할 때 this 키워드를 사용하는 것이 필수적인 것은 아니다.


< this 키워드를 이용한 메서드의 접근 >


< this 키워드를 이용한 예제, getter와 setter의 맛보기 >


2. 클래스, 메서드, 상수의 이름 규칙

2-1. 공통 이름 규칙

- 영어, 숫자, 언더바( _ )의 조합, 첫 글자는 반드시 영어로 표기한다.

2-2. 클래스 이름 규칙

- 첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시한다.

- 두 개 이상의 단어를 조합해야 할 경우 새로운 단어는 대문자로 시작한다.
class Student	-> 첫 글자 대문자
class MyClass	-> 두 단어 조합
class NetworkHelper

2-3. 메서드, 변수 이름 규칙

- 대부분 소문자로 구성되지만, 두 개 이상의 단어를 조합할 경우 
  새로운 단어는 대문자로 표기한다.
int age
String username 	( X )
String userName 	( O )
String user_name	( O )
String memberCount
[동사 + 명사 구조]
getName
setAge

2-4. 상수 이름 규칙

- 모두 대문자로 표시한다.
final double PI = 3.14;
final int COLOR;

3. 생성자

3-1. 생성자란?

Student std = new Student();    // 에서 Student(); 가 생성자이다!
- new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드

- 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.
class Student {	

	Student() {
		// 이 안은 객체가 생성될 때 자동으로 호출된다.	
	}		
    
}

Student std = new Student();
- 자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당 객체의 특성을
  초기화 하기 위하여 사용된다.(ex : 멤버변수의 초기값을 할당하는 용도)

3-2. 기본 생성자

- 파라미터가 없는 생성자

- 클래스에 특별히 생성자가 정의되지 않은 경우 
  java 컴파일러가 기본 생성자가 존재한다고 인식함.
class Student {

	Student() {
		// 생성자는 있지만, 내용이 비어 있다.
	}
    
}  

3-3. 생성자의 활용

- 생성자는 멤버변수의 값을 초기화 하기 위해 사용한다.


< 생성자를 이용해 멤버변수 초기화 >

3-4. 파라미터를 갖는 생성자

- 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능하다.

- 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를 외부적인
  요인에 의해 처리할 수 있다.


< 파라미터가 존재하는 생성자 예제 1 >


< 파라미터가 존재하는 생성자 예제 2>

< main문과 출력 값 >

** 클래스와 동일한 이름을 가지는 메서드는 생성자이다!

** 생성자는 객체의 생성과 동시에 특정 과정을 수행하는 것을 유도하기 위해 정의한다.
( 객체가 생성될 때 자동적으로 실행 )


4. 은닉성

4-1. 은닉성이란?

- 멤버변수나 메서드가 객체에 노출되지 않도록 설정하는 기법

- 객체를 사용하는 측의 실수로 인한 기능을 오작동을 방지하기 위해,
  클래스 일부를 숨기는 처리를 말한다.

4-2. 접근 한정자( 접근 제어자 )

- 변수 이름이나 메서드 이름 앞에 "접근 한정자"를 지정한다.
접근 한정자								설명
public							모든 곳에서 접근 가능하다.
							일반적으로 모든 메서드 앞에 명시한다.	
private				클래스 안에서만 사용 가능하고, 객체를 통해서 접근할 수 없다.
							일반적으로 모든 멤버변수 앞에 명시한다.
protected			현재 클래스 내의 다른 자원이나, 같은 패키지 안에 존재하는
					클래스와 하위 클래스에서 접근 가능하다. 잘 사용하지 않는다.
default 			접근 한정자를 명시하지 않은 경우. 현재 클래스 내의 다른
					자원이나 동일 패키지 내의 다른 클래스에서 접근 가능하다.
									잘 사용하지 않는다.


< 접근한정자를 이용한 멤버변수의 출력 >

4-3. 멤버변수의 은닉처리

- 거의 대부분의 멤버변수는 은닉처리를 기본으로 한다.


< private를 사용한 멤버변수의 은닉 >

4-4. getter, setter

- 멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 
  데이터에 접근하는 방법이 사라진다.

- 메서드를 통하여 간접적으로 접근하는 방법이 마련되어야 한다.

- getter, setter는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서드들을
  의미하는 용어이다.

** 데이터를 세팅 -> setter, 데이터를 가져옴 -> getter

Getter -> 은닉된 멤버변수의 값을 리턴하기 위한 메서드
Setter -> 파라미터로 전달된 값을 멤버변수에 복사(저장)하기 위한 메서드

- 메서드 작성 예
멤버변수 이름						getter										setter
String userName		public String getUserName() {}			public void setUserName( String userName ) {}
int userAge			public int getUserAge() {}				public void setUserAge( int userAge ) {}
- 'get', 'set' 접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시

- getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시

- setter는 연결된 멤버변수의 데이터 타입을 파라미터형으로 명시  


< getter, setter 예제 >

profile
도비는 자유에요!😝

0개의 댓글

Powered by GraphCDN, the GraphQL CDN