목표
자바의 Class에 대해 학습하세요.
학습할 것 (필수)
- 클래스 정의하는 방법
- 객체 만드는 방법 (new 키워드 이해하기)
- 메소드 정의하는 방법
- 생성자 정의하는 방법
- this 키워드 이해하기
클래스 정의하는 방법
클래스는 정의하는 방법은 다음과 같다. 클래스 안에 필드와 메소드를 정의할 수 있다.
// 접근지시자 class 클래스
public class Grizzly {
private int age; // field
// method
public int getAge() {
return age;
}
}
객체 만드는 방법 (new 키워드 이해하기)
객체를 만드는 방법은 클래스명 변수명 = new 클래스명(); 으로 만들 수 있다.
Grizzly grizzly = new Grizzly(); // 객체 생성
메소드 정의하는 방법
메소드를 정의하는 방법은 간단하다. 접근지시자 반환타입 메소드명(파라메터) { // 내용 } 와 같다.
// 접근지시자 class 클래스
public class Grizzly {
private String name; // field
// 메소드 정의
public void print() {
System.out.println(name);
}
// 메소드 오버로딩 파라메터가 다르면 동일한 메소드명을 가질 수 있다.
public void print(int age) {
System.out.println(name + "의 나이는 " + age);
}
}
생성자 정의하는 방법
생성자를 정의하는 방법은 접근지시자 클래스명() { // 내용 } 이다. 메소드 처럼 파라메터를 여러개 가질 수 있다. 단 생성자는 메소드와 비슷한 기능을 하지만 메소드라고 할 수는 없다.
public class Grizzly {
private String name;
// 기본생성자
public Grizzly() {
//super(); 부모클래스의 생성자를 호출하는 super(); 생략되어있다.
// 생성시 처리할 내용
}
// 매개변수가 하나인 생성자
public Grizzly(String n) {
// 생성시 처리할 내용
name = n;
}
}
생성자를 정의하지 않는 경우 public 클래스명() 으로 default 생성자를 가진다. super는 상속과 관련된 내용이므로 다음에 정리하고자 한다.
this 키워드 이해하기
public class Grizzly {
private String name;
// 매개변수가 하나인 생성자
public Grizzly(String name) {
name = name; // 블록 내의 name을 참조하므로 3번째 라인의 field를 참조할 수 없다.
}
}
일반적으로는 동일한 변수명을 가지는 경우 블록 내에서 참조되는 우선권을 가지므로 바깥의 field인 name을 참조할 수 없다. 이럴 때 사용할 키워드는 this이다.
public class Grizzly {
private String name;
// 매개변수가 하나인 생성자
public Grizzly(String name) {
this.name = name; // this 를 통해 바깥 field에 접근이 가능하다.
}
}
클래스 가지고 놀기
클래스를 정의, 생성하는 법을 간단히 정리하였는데 이를 바탕으로 클래스를 가지고 상태와 행위를 구현한다.
그리즐리 클래스 작성
// 접근지시자 class 클래스
public class Grizzly {
// 필드 정의
private int age;
private String locale;
private String comments;
// 생성자 정의
public Grizzly() {
age = 10;
locale = "Eng";
comments = "-";
}
public Grizzly(int age, String locale, String comments) {
this.age = age;
this.locale = locale;
this.comments = comments;
}
// 메소드 정의
public void print() {
System.out.println("그리즐리의 나이는 : " + age + " 사용언어는 : " + locale);
}
// getter 메소드 (field를 외부에서 직접 호출하지 않고 메소드를 통하여 값을 받는다)
public int getAge() {
return age;
}
public String getLocale() {
return locale;
}
public String getComments() {
return comments;
}
// setter 메소드 (field를 외부에서 직접 접근하지 않고 메소드를 통하여 값을 세팅한다)
public void setAge(int age) {
this.age = age;
}
public void setLocale(String locale) {
this.locale = locale;
}
public void setComments(String comments) {
this.comments = comments;
}
}
메인 메소드에서 그리즐리 클래스 생성 및 메소드 호출하기
public static void main(String[] args) {
Grizzly grizzly = new Grizzly();
grizzly.print(); // 그리즐리의 나이는 : 10 사용언어는 : Eng
grizzly.setAge(32);
grizzly.setComments("낮잠이 많습니다.");
grizzly.print(); // 그리즐리의 나이는 : 32 사용언어는 : Eng
Grizzly hungryGrizzly = new Grizzly(15, "Kor", "배고픕니다.");
hungryGrizzly.print(); // 그리즐리의 나이는 : 15 사용언어는 : Kor
System.out.println(hungryGrizzly.getComments()); // 배고픕니다.
}
'Programming > Java' 카테고리의 다른 글
[기본-8] 인터페이스 (0) | 2021.03.15 |
---|---|
[기본-6] 상속 (0) | 2021.03.03 |
[기본-4] 제어문 (0) | 2021.03.02 |
[기본-3]자바 연산자 (0) | 2021.03.01 |
[기본-2]자바 데이터 타입, 변수 그리고 배열 (0) | 2021.02.28 |