본문 바로가기
study_java/자바 공부하기

Java의 클래스와 클래스의 구성요소

by developer_j 2023. 4. 6.
728x90
반응형

1. 자바의 클래스

자바에서 클래스 = 붕어빵틀, 인스턴스 = 붕어빵틀로 찍어낸 붕어빵 으로 비유되곤 한다.

변수의 자료형은 두가지로 나뉘는데, (기본/비기본) 또는 (원시형/참조형)으로 구분한다. 여기에서 클래스로 생성하는 변수는 참조형 변수가 된다.

- 기본 자료형(원시 자료형)의 생성자 = 변수
- 비기본 자료형(참조 자료형)의 생성자 = 인스턴스, 클래스로부터 생성됨, new 키워드 사용

추가적으로, String의 자료형은 예외적으로 인스턴스가 아닌 변수라고 많이 얘기하지만, String 변수라고 이야기를 하더라도 String 객체의 참조 자료형이라고 확실히 알고 있어야 한다. (* 참조 - 빵형의 java)

// 기본 자료형의 생성자
int num = 10;

// 참조 자료형의 생성자
Class cls = new Class(); // --> Class 는 본인이 정의한 Class
  • “=” 기준으로 좌변 우변 같은 자료형으로 되어야 한다.
  • 비기본 자료형(참조 자료형)의 생성자는, 자료형의 생성자자료형을 상속받은 클래스의 생성자를 사용

 

클래스의 구성요소는 아래와 같다. 
① 멤버 변수 (field)
② 메서드 (method)
③ 생성자 (constructor)


2. 클래스의 구성요소

① 멤버 변수 (field)

클래스 내에 위치하는 변수를 멤버 변수라고 하며, 필드라고도 부른다.

public class TmpVO {

	String name;
	int age;

	static final int ONE = 1;
	static final int TWO = 2;
	static final int THREE = 3;

}

 

위의 코드를 기준으로,

TmpVO 클래스의 인스턴스를 new 키워드를 사용하여 인스턴스를 생성한 뒤에 사용할 수 있는 변수를 인스턴스 변수 라고한다.
반면 TmpVO 클래스로 인스턴스를 만들어서 접근하지 않고 바로 사용할 수 있는 변수를 클래스 변수라고 한다.

 

public class Main {
	public static void main(String[] args) throws Exception{
		// 클래스 변수, static 변수
		System.out.println(TmpVO.ONE);
		
		// 인스턴스 변수
		//System.out.println(TmpVO.age); -> 사용 불가
		TmpVO tmpVO = new TmpVO();
		System.out.println(tmpVO.age);
	}
}

class TmpVO {

	String name = "name";		// 인스턴스 변수
	int age = 1;			// 인스턴스 변수

	static final int ONE = 1;	// 클래스 변수
	static final int TWO = 2;	// 클래스 변수
	static final int THREE = 3;	// 클래스 변수

}	

/* 결과
1
1
*/

 

② 메서드 (method)

함수의 작은 개념. 클래스에 종속된 함수. 메서드명은 소문자로 시작하며, 주로 동사형으로 작성한다.
어떤 문제를 처리하기 위한 처리 과정을 구현해준다.

// 메서드 구조
[접근제어자] [반환자료형] [메서드명] ([매개변수]) {
	... 처리 코드
	return 반환결과;
}

 

메서드 구조 설명.

[접근제어자]

접근 가능한 범위에 대한 표시로, 클래스, 변수, 메서드 전체적으로 사용함.

  • private : 같은 클래스 내에서만 접근 가능
  • default : 같은 클래스, 같은 패키지면 접근 가능 (명시적으로 작성하지 않으며 생략하는 형태로 사용)
  • protected : 같은 패키지, 혹은 상속 관계에 있는 객체까지만 접근 가능
  • public : 모든 접근 허용

[반환자료형]

결과값으로 반환될 데이터의 자료형 작성하되, 반환될 데이터가 없다면 void

반환될 데이터는 return 을 통해 돌려준다.

public int myNumber(){
	int myNum = 10;
	return myNum;
}
// --> myNumber() 메서드 호출 시 무조건 10의 int 형 데이터를 리턴받는다.

 

[매개변수]

메서드 = 클래스 안에서 선언되어 멤버변수를 처리하는 함수,
멤버변수 = 클래스 안에 선언되어 있는 변수

* 변수 구분 1

메서드 내의 변수를 지역변수(local variable)
메서드에 전달받은 변수를 매개변수(parameter)
메서드로 전달한(메서드를 호출할 때 전달한) 변수를 인자(argument)
라고 한다.

* 변수 구분 2

변수명이 겹칠 경우, 메서드에 전달된 매개변수가 우선순위가 된다.

멤버변수와 구분을 원할 경우 this 키워드를 사용하면 this.변수명은 멤버변수를 가르키게 된다.

 

③ 생성자 (constructor)

생성자는 클래스를 최초에 초기화해주는 역할을 한다.

// 생성자의 구조
[접근 제어자] 클래스명([매개변수 ...]){
		처리 명령
}

 

** 생성자 특징

  • 반환값이 없다(return).
  • 생성자명은 클래스명과 같다.
  • 1개의 클래스 당 1개 이상의 생성자를 가질 수 있다.

혹여나 본인이 따로 매개변수가 필요없다면,, 클래스 내에 생성자를 따로 작성해 주지 않아도 된다. 생략된 형태로 자동 생성 되어있음.

 

** this 키워드

클래스 내에서 같은 생성자를 호출하는 키워드.

this(매개변수1, 매개변수2) 를 통해 두번째 생성자를 호출하고 있음. 클래스 내에서 this 키워드는, 해당 클래스 내의 것들을 가리키게 한다.

728x90
반응형