본문 바로가기
Language/Java

클래스와 인스턴스

by Zayne 2023. 2. 2.

클래스(Class) = 데이터(Data) + 메소드(Method)

데이터 : 프로그램상에서 유지하고 관리해야 할 데이터

메소드 : 데이터를 처리하고 조작하는 기능

■ 인스턴스 변수(=멤버 변수, 필드) : 클래스 내에 선언된 변수

■ 인스턴스 메소드 : 클래스 내에 정의된 메소드

클래스가 정의되었다고해서 인스턴스 변수나 인스턴스 메소드를 사용할 수 있는 것이 아니다.

new 키워드를 사용하여 인스턴스화를 해야 클래스 내의 변수와 메소드를 사용할 수 있다.

// ex)
new BankAccount()
// 클래스 BankAccount의 인스턴스화(객체화)

※인스턴스와 객체는 그 의미가 완전히 동일

그리고 만들어진 인스턴스를 사용하기 위해서는 이 인스턴스를 가리키는 참조변수가 필요하다.

ex)
BankAccount myAcnt = new BankAccount();
//myAcnt가 참조변수

 

다음과 같이 하나의 인스턴스를 둘 이상의 참조변수가 동시에 참조하는 것도 가능하다.

ex) 
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;

■ 생성자

1) 생성자의 이름은 클래스의 이름과 동일해야 한다.

2) 생성자는 값을 반환하지 않고 반환형도 표시하지 않는다.

위의 조건을 만족하면 자바 컴파일러에 의해서 생성자로 인식된다.

ex) 
public BankAccount(String acc, String ss, int bal) {
	accNumber = acc;
	ssNumber = ss;
	balance = bal;
}

위 메소드의 이름 BankAccount는 클래스의 이름과 같다고 가정한다.

그리고 반환하지 않으며 반환형도 선언하지 않았으므로 생성자의 조건을 모두 갖추었다.

생성자가 있을 때 인스턴스 생성 예시

ex)
BankAccount yoon = new BankAccount("12-34-98", "90982-234981", 10000);

 

인스턴스의 생성과 인스턴수 변수(멤버 변수)들의 초기화가 동시에 이루어졌다.

만약 생성자를 정의하지 않은 클래스를 컴파일하게 되면

자바 컴파일러가 '디폴트 생성자'라는 것을 클래스의 정의에 넣어준다.

ex)
class BankAccount {
	int balance;
	public BankAccount() { } //컴파일러에 의해 자동 삽입되는 디폴트 생성자
	public int deposit(int amount) { ... }
}

클래스의 이름 규칙(Camel case model)

1) 클래스 이름의 첫 문자는 대문자로 시작한다

2) 둘 이상의 단어가 묶여서 하나의 이름을 이룰 때, 새로 시작하는 단어는 대문자이다

메소드와 변수의 이름 규칙(변형된 Camel case model)

1) 첫 문자는 소문자로 시작한다

2) 둘 이상의 단어가 묶일 때, 새로 시작하는 단어는 대문자이다

상수의 이름 규칙

1) 모든 문자는 대문자이다

2) 둘 이상의 단어를 연결할 때는 언더바(_)를 사용한다

※ 상수란 값이 변하지 않는 수를 의미. 즉, 값을 딱 한 번만 할당할 수 있으며 변경 불가능하다.

변수를 선언할 때 앞에 final을 추가하면 상수가 된다.

ex)
final int MAX_SIZE = 100;
final char CONST_CHAR = '상';

 

'Language > Java' 카테고리의 다른 글

배열  (0) 2023.02.05
StringBuilder 클래스  (0) 2023.02.04
메소드 오버로딩과 String 클래스  (0) 2023.02.04
클래스 변수와 클래스 메소드  (0) 2023.02.03
변수의 스코프  (0) 2023.02.02