Java - Class

lacblueeun·2021년 1월 6일
0

Java

목록 보기
5/5
post-thumbnail
post-custom-banner

1. 클래스 (Class)

자바에서 클래스란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다. 속성과 기능으로 정의되어 있다.
클래스는 객체의 상태를 나타내는 필드(field)객체의 행동을 나타내는 메소드(method)로 구성되어 있다.

필드 : 클래스에 포함된 변수(variable)을 의미한다.

1-1 클래스 정의하는 방법

class MyClass {
    // field, constructor, and 
    // method declarations
}

2. 객체

객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 객체가 가지고 있는 속성과 기능을 그 객체의 멤버라 한다.

2-1 객체와 인스턴스

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다. 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라 한다.

2-2 객체 만드는 방법

객체는 new 키워드를 이용해 생성이 가능하다. new 키워드를 이용하면 메모리 힙영역에 데이터를 저장할 영역을 할당 받은 후 해당 영역의 주소를 객체에게 반환하여 객체를 사용할수 있도록 한다.

Person person = new Person(); 

3.메서드 (method)

특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다.
메서드는 크게 선언부(header)와 구현부(body)로 이루어져 있다.
선언부는 메서드의 이름매개변수 선언 그리고 반환타입으로 구성되어 있다.

3-1 메서드 구현

int add (int x, int y) { // 선언부
	int result = x + y; // 구현부
    	return result; // return문
}

4. 생성자

생성자는 인스턴스가 생성될 때, 호출되는 인스턴스 초기화 메서드이다.
인스턴스변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 하는 작업을 위해서도 사용된다.

4-1 생성자의 조건

  1. 생성자의 이름은 클래스의 이름과 같아야 한다.
  2. 생성자는 리턴 값이 없다.
class Example {
	Example() { ... }
	Example(int x, int y) { ... }
}

연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. 생성자라는 용어 때문에 오해하기 쉬운데, 생성자는 단순히 인스턴스변수들의 초기화에 사용되는 조금 특별한 메서드일 뿐이다.

4-2 기본 생성자 (default constructor)

컴파일 할 때, 소스파일(*.java)의 클래스에 생성자가 하나도 정의되지 않은 경우 컴파일러는 자동적으로 아래와 같은 내용의 기본 생성자를 추가하여 컴파일 한다.

class Example {
	Example() { ... }
}

4-3 매개변수가 있는 생성자

생성자도 메서드처럼 매개변수를 선언하여 호출 시 값을 넘겨받아서 인스턴스의 초기화 작업에 사용할 수 있다. 인스턴스마다 각각 다른 값으로 초기화되어야 하는 경우가 많기 때문이다.

class Example {
	String name;
    	int age;
        
	Example(String a, int b) { 
    	name = a;
        age = b;
    }
}

5. this 키워드 이해하기

this 는 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다. 모든 인스턴스메서드에 지역변수로 숨겨진 채로 존재한다.

class Example {
	int x;
    	int y;
        
	Example(int x, int y) { 
    	this.x = x;
        this.y = y;
    }
}

생성자의 매개변수로 인스턴스변수들의 초기값을 제공받는 경우가 많기 때문에 매개변수와 인스턴스의 이름이 같은 경우가 있다.
변수이름을 달리 하는 것 보다 this를 사용해서 구별되도록 하는 것이 의미가 명확하다.

참조

https://www.notion.so/Live-Study-5-75f857b63e524d33914a8b3ec6e1e894
https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

profile
Go for Frontend Developer 🧪
post-custom-banner

0개의 댓글