본문 바로가기
JAVA

5주차. 클래스

by AndoneKwon 2022. 9. 15.

1. 자바에서 클래스란

객체 지향 프로그래밍에서는 모든 데이터들을 객체로 취급한다.

자바에서 클래스란 객체를 만들기 위한 설계도라고 생각하면 된다.

2.  클래스 정의하는 방법

클래스는 아래와 같이 "class" 키워드를 이용하여 class라는 것을 나타내고 뒤에는 클래스의 이름을 적어준다.

그 후 클래스를 구성하고 있는 멤버 변수를 작성해준다.

또한 클래스는 자체의 메서드를 가질 수 있는데 클래스 내부에 함수를 정의해주면 클래스의 함수를 사용할 수 있다.

public class Member {
    private Integer id;
    private String email;
    private String password;
    
    public Integer getId() {
        return id;
    }
    
    public void makePassword(String userPassword) {
        this.password = userPassword + "salt";
    }
}

3.  생성자를 정의하는 법

class Member {
    private Integer id;
    private String email;
    private String password;
    
    public Member(Integer id, String email, String password) {
    	this.id = id;
        this.email = email;
        this.password = password;
    }
}

public class MemberService {
    public Member makeMember(String userPassword) {
        Member member = new Member("user","testMail@test.com",userPassword);
        return member;
    }
}

생성자는 클래스와 동일한 이름을 가진 함수를 만들고 해당 함수를 생성하는 방법은 new 키워드를 이용하여 생성할 수 있다.

Member 라는 생성자도 시그니처를 가지기 때문에 매개변수에 따라서 생성자의 동작을 다르게 할 수도 있다.

실제로는 보통 new 키워드를 이용하기 보다는 정적 팩토리 메서드를 사용하기를 권장하는데 이에 대한 내용은 이팩티브 자바를 정리한

https://andonekwon.tistory.com/97?category=496337 

 

Item 1 생성자 대신 정적 팩터리 메서드를 고려하라

정적 팩터리 메서드 정적 팩터리 메서드란 그 클래스의 인스턴스를 반환하는 단순한 정적인 메서드를 의미한다. 아래는 그 예인 Boolean의 valueOf 코드이다. public static Boolean valueOf(boolean b) { return..

andonekwon.tistory.com

내용을 참조하면 된다.

 

4. This 키워드 이해하기

w3c 스쿨에서 정의한 this 키워드에 대해 정의한 내용은 다음과 같다.

The "this" keyword refers to the current object in a method or constructor.

한국어로 변역하자면 메서드 또는 생성자에서 최근의 객체를 참조하는 키워드이다.

this 키워드는 클래스의 내부에서만 사용가능하다.

한번 실제로 this 키워드를 출력해보도록 하겠다.

class Member {
    int a;
    int b;
    
    public Member(int a, int b) {
        this.a = a;
        this.b = b;
    }
    
    public void test() {
        System.out.println(this);
    }
}

public class Main
{
	public static void main(String[] args) {
		Member member = new Member(1,2);
		member.test();
	}
}

출력 결과는 다음과 같다.

Member@3b22cdd0

Member의 해시값을 가질 수 있다. 따라서 this 키워드를 통해서 객체를 참조 가능하여 내부 변수에 접근이 가능하다.

4 - 1) 생성자에서의 this

생성자 내부에서 this를 호출하면 다음과 같이 생성자로 사용이 가능하다.

class Member {
    int a;
    int b;
    
    public Member() {
        this(0, 0); //this 키워드를 통해서 int를 두개 받는 생성자를 호출한다.
    }
    
    public Member(int a, int b) {
        this.a = a;
        this.b = b;
    }
    
    public void test() {
        System.out.println(this.a + " " + this.b);
    }
}

public class Main
{
	public static void main(String[] args) {
		Member member = new Member();
		member.test();
	}
}

본 글은 백기선님의 자바스터디 커리큘럼을 따라 정리한 내용입니다.

https://github.com/whiteship/live-study/issues/5