이론/자바 풀스택 국비수업

220315 this2, 클래스·메서드·변수·상수 이름 규칙, 생성자, 은닉성

달거북씨 2022. 3. 17. 00:52
1. this

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

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

 

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

  • 멤버변수는 지역변수와 구별하기 위하여 가급적 this를 통하여 접근한다.
  • 메서드에 접근할 때는 this 키워드를 사용하는 것이 필수적인 것은 아니다.

 


Member 클래스 작성

▶ 멤버변수에는 this.를 붙여주었고, 메서드에는 붙여주지 않았다.

▶ say() 메서드의 출력문에서 this.getName(), this.getAge()를 해주어도 동일하게 기능한다. 


 

 

 

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

2-1. 공통 이름 규칙

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

 

2-2. 클래스 이름 규칙

  • 첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시한다.
  • 두 개 이상의 단어를 조합해야 할 경우 새로운 단어는 대문자로 시작한다. ▶ 가독성을 위해서
    → class Student
    → class MyClass
    → class NetworkHelper

 

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

  • 대부분 소문자로 구성되지만, 두 개 이상의 단어를 조합할 경우 새로운 단어의 시작은 대문자로 한다.(또는 언더바_ 사용) ▶ 가독성을 위해서
    → int age
    → String user_name 
    → String userName
    → String memberCount
  • 동사 + 명사 > 기능을 알 수 있게 이름을 만들면 효율성이 올라간다.
    → get : 값을 얻을 때 (getName)
    → set : 값을 세팅할 때 (setAge)
  • 220304 변수와연산자 포스팅(1-5. 변수 명명 규칙) 참고 https://turtlemoon.tistory.com/17
 

220304 변수와 연산자

앞으로 우선 국비수업 들은 거 정리하고 자바 기초 수업 들었던 거 정리할 예정! 1. 변수 1-1. 문자열 데이터 참조변수 : 프로그램 코드에서 "문장"을 표현하기 위해 사용되는 데이터 값 1-2. String

turtlemoon.tistory.com

 

2-4. 상수 이름 규칙

  • 모두 대문자로 표시한다. > 상수임을 알 수 있게 해주는 약속
    → 파이 : final double PI
    → RGB값 : final int COLOR

 

 

 

3. 생성자
★기술 면접에 많이 나옴

3-1. 생성자란?

  • new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
  • 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.
class Student{
	Student(){	// 기본 생성자 > 자바 컴파일러에 의해 자동 생성되기 때문에 그동안 명시하지 않았음
		...	// 이 안은 객체가 생성될 때 자동으로 호출된다.
	}	
}

public static void main(String[] args){
	Student std = new Student();	// 생성자가 명시되어 있지 않을 때도 객체 생성 시 자동으로 생성자 호출
}
  • 자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당 객체의 특성을 초기화하기 위하여 사용된다(ex. 멤버변수의 초기값을 할당하는 용도)
  • 생성자는 객체에 값을 초기화할 때 사용하고, 메서드는 어떠한 기능을 구현하고 싶을 때 사용한다.

 

3-2. 파라미터가 없는 생성자

  • 클래스에 특별히 생성자가 정의되지 않은 경우 java 컴파일러가 기본 생성자가 존재한다고 인식한다.
class Student{
	Student(){}	// 생성자는 있지만, 내용이 비어있다.
}

▶ 객체 생성 시 자동으로 생성자가 호출되기 때문에 "생성자 호출"이 출력됨

 호출되면서 멤버변수가 초기화되고, read() 메서드 사용 시 출력됨

 

3-3. 생성자의 활용

  • 생성자는 멤버변수의 값을 초기화하기 위해 사용한다.
  • 반드시 필요한 변수가 있을 때 생성자에서 파라미터를 이용한다 > 강제성을 갖는다.

 

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

  • 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능하다.
  • 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를 외부적인 요인에 의해 처리할 수 있다.

생성자에서 파라미터를 사용하면, 객체를 생성할 때도 형에 맞는 파라미터를 입력해주어야 한다.

▶ 파라미터가 없으면 에러가 뜬다. 즉, 위에 생성자의 활용에 언급했던 대로 강제성을 띈다.

 


멤버변수, 파라미터가 있는 생성자, 메서드 생성
메인메서드에서 객체생성하고 실행


 

 

 

4. 은닉성

4-1. 은닉성이란?

  • 멤버변수나 메서드가 객체에 노출되지 않도록 설정하는 기법
  • 객체를 사용하는 측의 실수로 인한 기능의 오작동을 방지하기 위해, 클래스 일부를 숨기는 처리를 말한다.

 

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

  • 변수 이름이나 메서드 이름 앞에 "접근 한정자"를 지정한다.
접근한정자 설명
★public - 모든 곳에서 접근 가능하다.
- 일반적으로 모든 메서드 앞에 명시한다.
★private - 클래스 안에서만 사용 가능하고, 객체를 통해서 접근할 수 없다.
- 일반적으로 모든 멤버변수 앞에 명시한다.
protected - 현재 클래스 내의 다른 자원이나, 같은 패키지 안에 존재하는 클래스와 하위클래스에서 접근 가능하다.
- 잘 사용 안한다.
default - 접근한정자를 명시하지 않은 경우.
- 현재 클래스 내의 다른 자원이나 동일 패키지 내의 다른 클래스에서 접근 가능하다.
- 잘 사용 안한다.
  • ex. public static void main (String[] args){}
    → 메인 메서드는 시작점이기 때문에 모든 곳에서 접근할 수 있도록 public으로 시작
    → 마찬가지로 시작점이기 때문에 누군가에게 값을 리턴해줄 일이 없으므로 void 사용
    ▶ static은 안 알려주셔서 한 번 찾아보았다. 다른 거 다 빼고, static 요소를 static이 아닌 요소에서 호출하는 것은 불가능하고, 메인 메서드는 시작점이어서 객체를 생성하지 않아도 작업을 수행해야 하기 때문에 static을 붙인다.

***접근한정자의 접근 가능 범위 참고

2022.03.12 - [이론/자바 기초] - JAVA 그게 뭐야? 14. 접근 권한 제어자, 추상메소드, 캡슐화, 익명클래스

 

JAVA 그게 뭐야? 14. 접근 권한 제어자, 추상메소드, 캡슐화, 익명클래스

1. 접근 권한 제어자 다른 패키지 혹은 다른 클래스에서 해당 필드에 접근할 수 있는 범위(권한)을 설정해주는 키워드들 접근 제어자 4개 중 하나만 사용 가능 같은 클래스 < 같은 패키지 < 다른

turtlemoon.tistory.com

 

 

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

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

 

4-4. getter, setter

  • 멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 데이터에 접근하는 방법이 사라진다.
  • 메서드를 통하여 간접적으로 접근하는 방법이 마련되어야 한다.
  • getter, setter는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서드들을 의미하는 용어이다.
    (네이밍 기준은 사용자 기준 > 객체를 만들어 클래스를 사용하는 메인 메서드가 사용자)
    getter > 은닉된 멤버변수의 값을 리턴하기 위한 메서드
    setter > 파라미터로 전달된 값을 멤버변수에 복사하기 위한 메서드
  • 메서드 작성 예
멤버변수 이름 getter setter
String userName String getName(); void setName(String userName);
int userAge int getAge(); void setAge(int userAge);

      - 'get', 'set' 접두사 뒤에 변수 이름을 첫 글자가 대문자인 형태로 명시

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

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

 


은닉된 멤버변수에 값을 넣는 setter, 값을 읽는 getter 메서드 생성
객체 생성 후 setter에 임의의 데이터 세팅 후 getter로 출력

 


변수나 메소드 선언시 public 또는 private를 붙이기도 하고 아무것도 없이 사용하기도 한다.

이 경우 접근제어자가 생략이 된 건지 아니면 다른 기능을 하고 있는 건지 궁금해서 찾아봤는데,

public이 생략되면 default 접근 제한을 가진다고 한다.

728x90