728x90
반응형
SMALL
클래스 (Class)의 정의 + 생성자
클래스 : 사용자가 만들고자 하는 대상의 "상태" 와 "기능" 을 함께 가지고 있는 "데이터 타입
- "상태" 는 클래스의 멤버 변수(member variable), 속성(attribute) 혹은 필드(field) 로도 표현
- "기능" 은 클래스의 멤버 메소드(member method)로 정의 하고 행동(behavior) 로도 표현
- 일반적으로 멤버 변수는 private 멤버 메소드는 public 으로 설정
- 클래스를 사용하기 위해서는 해당 클래스의 "인스턴스" 또는 "객체" 를 생성해야함
- [구문] 클래스이름 변수이름 = new 생성자();
- 생성자란 클래스의 이름과 동일하고 클래스의 멤버변수들을 초기화하는 역할
- 생성자의 목적은 인스턴스 생성 시 멤버 변수들을 초기화 해주는 것
- new 로 생성하는 인스턴스들은 인스턴스가 생성이 될 때, 자동으로 초기화가 되며 초기화 할 값이 지정되어있지 않으면 각 변수들의 타입의 기본값 (디폴트값) 으로 초기화가 됨
- return type이 없으며 매개변수 (argument)를 가질 수 있고 오버로딩(overloading)이 가능함
- [주의] 클래스에서 하나 이상의 생성자를 만들어주게 되면 디폴트 생성자를 만들어주지 않음. 따라서 아무일을 하지 않더라고 디폴트 생성자를 반드시 만들어주는 것을 추천
public class Hi{ // 클래스 예시
private int num;
public Hi(){} // 디폴트 생성자
public Hi(int n){this.num = n} // 매개변수 있는 생성자 + 오버로딩
}
Getter & Setter
- 앞서 이야기 했듯이 클래스의 멤버 변수는 private으로 선언하는 것.
- 그 이유는 클래스 안에 필요한 속성 과 행동을 외부에서의 직접적인 접근을 제어하기 위함이다. (캡슡화 encapsulation)
- 이때 클래스의 멤버변수를 접근하기 위한 기능을 제공하는 메소드를 Getter & Setter 라고 부른다.
자바 빈 (Java Bean)
- 자바 빈이란 자바 빈즈(Java Beans)의 규약에 따라 작성된 자바 클래스
- 필자가 자세한 내용을 보기위해 참고한 블로그 [https://soft.plusblog.co.kr/58]
- 자바빈 클래스 외부에서 필드에 접근 할 경우 반드시 규약대로 정의된 getter, setter 메소드를 통해 접근 해야 하며 이렇게 제공되는 것을 property(속성) 이라고 부른다.
Property (속성)
- getter, setter 네이밍
- 프로퍼티 값을 '읽는' 메소드는 get으로 시작한다. (읽기 속성)
- 프로퍼티 값을 '변경'하는 메소드는 set으로 시작한다. (쓰기 속성)
- get과 set 뒤에는 프로퍼티의 이름 첫 글자를 대문자로 바꾼다.
- set 메소드는 1개의 파라미터를 갖는다. - property 는 필드가 아니며, 객제의 속성(attribute)을 표현하는 값을 다루는 것이면 무엇이든 가능하다.
//예시
getter & setter 작명
age => getAge
=> setAge
this
- 클래스 안에서의 "this"는 객체 내에서 자기 자신(인스턴스)를 가리킴
- 이를 통해 메소드 체이닝 (method chaining) 을 사용할 수도 있다.
- 메소드 체이닝이란 -> 자기자신을 리턴하여 연이어 메소드 호출을 연상케 하는 메소드를 설계하는 것
- 메소드 체이닝 참고 관련 블로그 [https://dreamcoding.tistory.com/60] (그냥 본인이 읽고 이해한 블로그)
//예시 클래스
public class Number {
private int num = 100; // 필드 초깃값 명시 가능
public Number() {
}
public Number(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Number add(Number x){
this.num += x.num;
return this; //자기 자신을 리턴, return 값이 Number 클래스 인걸 확인
}
}
Lambok 라이브러리
- 개발 과정에서 발생하는 잦은 클래스 설계 변경등에 대해 자동적으로 생성자, getter, setter, toString(). builder 를 제공해준다.
- 사이트 : [https://projectlombok.org/]
- rumtime이 아닌 compile time에 동작하는 라이브러리 이다.
- 본인이 보고 따라했던 Lombok 사이트 [https://goddaehee.tistory.com/208]
//예시
import lombok.*; //lombok을 import해줘야함
//@Setter
//@Getter
@Data //
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
@Builder //BUilder pattern
public class Model {
@NonNull
private String title;
@NonNull
private int old;
private boolean isAdult;
private char gender;
private short size;
private String author;
}
728x90
반응형
LIST
'프로그래밍 > 자바' 카테고리의 다른 글
[자바/기본] 상속 Inheritance (0) | 2023.10.12 |
---|---|
[자바/기본] Modifier 제어자 (0) | 2023.10.10 |
[자바] 정올 189 ~ 194 && 215, 216, 237 : 문자열2 - 형성평가 1 ~ 9 (1) | 2023.10.04 |
[자바] 정올 602~ 612 : 문자열2 - 자가진단1 ~ 11 (0) | 2023.10.04 |
[자바] 정올 182 ~ 188 : 문자열1 - 형성평가1 ~ 7 (0) | 2023.10.04 |