본문 바로가기
스터디/2209_자바의정석

5주차 과제 : 클래스

by Jeong.dev 2022. 9. 26.

📌 클래스와 객체

클래스, 객체 정의와 용도

- 클래스 : 객체를 정의해 놓은 것(설계도)

- 객체 : 실제로 존재하는 것 (제품)

 

클래스가 왜 필요해?

→ 객체를 생성하기 위해

→ 객체가 왜 필요해?

→ 객체를 사용하기 위해

→ 객체를 사용한다는 건?

→ 객체가 가진 속성(변수), 기능(메서드)를 사용하는 것

 

 

객체의 구성요소

- 속성 (변수), 기능 (메서드)

 

 

인스턴스의 생성과 사용

1. 클래스 작성

2. 객체 생성

3. 객체 사용

  → 꼭 참조변수(리모컨)을 통해 사용해야 한다.

 

클래스의 또 다른 정의

1. 설계도

2. 데이터 + 함수(= 명령문, 메서드 묶음)

3. 사용자의 정의 타입 (프로그래머가 관련 값 묶어서 하나의 타입으로 지정)

 

 

 

📌 메서드

메서드

- 작업 단위로 문장들을 묶어놓은 것(명령문 집합)

- 작업에 필요한 값 입력 받고 결과를 반환한다.(리턴값 없을수도 있음)

- 하나의 메서드에서 하나의 기능만 수행하게 작성한다.

 

 

메서드 정의

- 클래스 영역에서만 가능

int add(int a, int b){  // 선언부
    int result = a + b;	// 구현부
    return result;
}

- int

  - 작업결과 타입(반환타입)

  - 작업 결과는 0개 또는 1개만 가능

  - 여러개면 객체 또는 배열로 타입 지정

- (int a, int b) : 매개변수(지역변수), 작업에 필요한 값들(0개부터 n개 가능)

- result : 지역변수

- return

  - 반환타입이 void가 아니면 반드시 작성해야 한다.

  - void면 생략 가능

  - if문은 참일 때, 거짓일 때 return문 2개 필요

- 구현부

  - 지역변수만 사용한다.

  - 다른 메소드에서 지역변수 이름 겹쳐도 상관 없음(사용 영역이 다르기 때문)

 

 

 

📌 생성자

생성자

- iv 초기화하는 메서드(인스턴스 초기화)

- 초기화 편하게 하려고 만든다.

- 모든 클래스에는 하나 이상의 생성자가 있어야 한다.

  → 생성자 하나도 없으면 컴파일러가 기본 생성자 자동 추가

  → 생성자 하나라도 있으면 기본 생성자 무조건 작성해줘야 한다.

      (컴파일러가 기본 생성자 자동추가 안해줘서)

 

 

생성자의 조건

- 생성자의 이름은 클래스명과 동일

- 생성자는 리턴값 없다.(반환이 아닌 그냥 초기화하는 대입문이기 때문에)

class Time{
	int hour;
	int minte;

	Time(){}	// 기본 생성자
	Time(int h, int m){ // 생성자
		this.hour = h;
		this.minute = m;
	}
}

 

 

생성자에서 다른 생성자 호출 this()

- 같은 클래스의 다른 생성자 호출할 때 사용

- 생성자 첫줄에서만 사용 가능

class Time{
	int hour;
	int minte;

	Time(){ // 매개변수 지정 안하면 12시 34분으로 기본값 하겠다.
		this(12, 34);
	}

	Time(int h, int m){ // 매개변수 지정하면 그 값으로 시,분 지정하겠다.
		this.hour = h;
		this.minute = m;
	}

}

 

 

참조변수 this  ≠ this() ← 얘는 생성자

- 인스턴스 자신 가리키는 참조변수

- 생성자, 인스턴스 메서드에서 사용

- 클래스메서드에서 사용 불가

class Time{
	int hour;
	int minte;

	Time(){}
	Time(int hour; int minte;){
		this.hour = hour;
		this.minute = minte;;
	}
}

 

 

 

댓글