📌 클래스와 객체
클래스, 객체 정의와 용도
- 클래스 : 객체를 정의해 놓은 것(설계도)
- 객체 : 실제로 존재하는 것 (제품)
클래스가 왜 필요해?
→ 객체를 생성하기 위해
→ 객체가 왜 필요해?
→ 객체를 사용하기 위해
→ 객체를 사용한다는 건?
→ 객체가 가진 속성(변수), 기능(메서드)를 사용하는 것
객체의 구성요소
- 속성 (변수), 기능 (메서드)
인스턴스의 생성과 사용
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;;
}
}
'스터디 > 2209_자바의정석' 카테고리의 다른 글
7주차 과제 : 패키지 (0) | 2022.10.06 |
---|---|
6주차 과제 : 상속 (0) | 2022.09.29 |
4주차 과제 : 제어문 (0) | 2022.09.18 |
3주차 과제 : 연산자 (0) | 2022.09.18 |
2주차 과제 : 자바 데이터 타입, 변수 그리고 배열 (0) | 2022.09.15 |
댓글