본문 바로가기

Programming/Java

[기본-5] 클래스

목표

자바의 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