6주차: 클래스, Enum이란?

동현·2021년 2월 22일
0

6주차: 클래스, Enum 이란?


Goal

자바의 클래스에 대해 학습하세요.

학습할 것

  • 클래스 정의하는 방법
  • 객체 만드는 방법 (new 키워드 이해하기)
  • 메소드 정의하는 방법
  • 생성자 정의하는 방법
  • this 키워드 이해하기

클래스 정의하는 방법

자바의 클래스란?

  • 현실 세계를 객체 지향으로 구현하는 과정에 사물 하나하나를 기능별로 묶어 구현 하는 방법으로 각 클래스 안에 역할에 따라 각 클래스의 기능을 서술해 나간다.
  • 클래스의 구조에는 변수(데이터, 속성), 메서드(행위), 생성자를 가지고 있다.
  • 객체를 생성하기위한 틀 (붕어빵 -> 객체, 붕어빵 틀 -> 클래스)
  • class키워드로 정의, new 연산자를 사용해 객체 생성

자바에서 클래스 정의하는 방법

접근제어자 class 클래스 이름 {
	접근제어자 필드타입 필드이름;
    접근제어자 필드타입 필드이름;
    
    접근제어자 메소드 이름(매개변수) //메소드
    
    접근제어자 클래스 이름(매개변수) {
    
    }//생성자
}


객체 만드는 방법

자바에서 객체를 만드는 방법

  • 기존의 구현 해놓은 클래스를 토대로 객체의 인스턴스를 생성할수 있다.
    우선 다음과 같이 객체 참조 변수를 먼저 선언하고 이후에 new 키워드로 인스턴스를 생성후 참조변수에 저장하는 방법이 있다.
클래스의이름 객체참조변수의이름;
Stack stack;
stack = new Stack();
동시에 참조변수 선언과 인스턴스 생성도 가능하다
Stack stack = new Stack();
  • 위 과정은 new 연산자가 객체 stack에 메모리 공간을 할당하고 생성자가 객체를 초기화 후 new 연산자가 새로 생성된 객체의 주소에 저장을 하게 된다.

메소드 정의 하는 방법

메소드란?

  • 어떤 문제를 해결하기 위한 방법을 소스를 묶어 틀을 만들어 놓고 필요에따라 호출하여 동작하는 기능이다

메소드 선언

(public) (static) 리턴 타입 메소드명() {
	실행할 코드 작성;
    return; void 아닐 경우에만
}
  • static 에 대해서는 앞에서 언급한적이 있으므로 따로 언급하지는 않겠다.
  • 메소드의 return 값은 메소드를 정의할때 지정한 타입으로 return 을 해주어야 한다.

메소드 호출 방법

만약에 객체내의 메소드를 리턴 할 경우에는
stack.pop(); 
같은 클래스 내에서 public 의 경우에는
pop(); 

생성자 정의 방법

생성자란?

  • 생성자는 new 연산자를 통해 인스턴스를 생성시 호출 되는 메소드로 인스턴스 변수를 초기화 시키는 역할을 한다.

선언 방법

public 클래스명(매개변수) {

}
이때 클래스명은 클래스의 이름과 똑같이 해주어야 한다.
  • 간단하게 말하면 클래스를 통해 객체를 만들때 객체를 만드는 과정에 어떤 값을 포함하는 객체를 만들지 생성단계에서 처리할수있도록 지정해주는것이다.
public 클래스명() {} 는 디폴트 생성자로 매개변수가 없다 이는 자동으로 생성 되어있는 부분으로 따로 구현하지 않아도 된다.
  • 이때 만약 생성자를 따로 구현 해놓은게 있다면 컴파일러는 디폴트 생성자를 자동으로 생성해주지 않게 된다.
public 클래스명() {}
public 클래스명(int i) {}
  • 위와 같이 생성자는 여러개가 존재할수 있으며 이를 생성자 오버로딩이라고 한다.

this. 키워드 정리

this 키워드

  • this 키워드는 클래스가 인스턴스화 됐을때 자기 자신의 메모리 주소를 담고 있는 키워드다.
public class Test {
	private int testInt;
    private String testString;
    
    public Test(int testInt, String testString) {
    	testInt = testInt;
        testString = testString;
    }// 이떄 과연 Test 클래스 내부 멤버인 testInt 에 정상적으로 값이 저장이 되었을까?
    	아니다. 이렇게 매개변수의 이름과 멤버의 이름이 같을 경우 this를 사용한다.
    
    public Test(int testInt, String testString) {
    	this.testInt = testInt;
        this.testString = testString;
    }
  • 즉 주로 생성자와 메소드의 매개변수 이름과 필드가 비슷할 경우에 사용한다.
profile
여긴 어디 나는 누구?

0개의 댓글