정리/Java
자바의 정석 56~60강 클래스의 정의, 변수 종류, 클래스/인스턴스 변수, 메서드
민발자
2023. 7. 30. 17:49
728x90
ch 6-9~10 클래스 정의
1. 클래스
- 설계도
- 데이터+함수
- 사용자 정의타입
변수 : 하나의 데이터를 저장할 수 있는 공간
배열 : 같은 종류의 데이터를 묶어서 저장할 수 있는 공간
구조체 : 서로 연관된 데이터(다른 종류)를 묶어서 저장할 수 있는 공간
클래스 : 데이터와 함수의 결합(구조체 + 함수)
2. 사용자 정의타입
원하는 타입을 직접 만들 수 있음
// 시간이라는 데이터를 다루기 위한 변수
int hour;
int minute;
int second;
// 여러 시간을 다룰때 배열을 사용하게 된다면?
int[] hour = new int[3];
int[] minute = new int[3];
int[] second = new int[3];
// 시분초 데이터를 사용하기 위해선 배열을 다뤄 시분초를 묶어 하나으 시간으로 반환하는 과정이 필요
//class를 사용하면 시간이라는 데이터를 정의하여 사용할 수 있다
class Time{
int hour;
int minute;
int second;
}
Time[] t = new Time[3];
t[0] = new Time();
t[1] = new Time();
t[2] = new Time();
// 객체배열을 이용하면 시분초를 하나로 묶기위한 과정을 줄일 수 있다.
ch 6-11 선언위치에 따른 변수 종류
종류 | 선언 위치 | 생성시기 | 설명 |
클래스 변수 cv (static변수, 공유 변수) |
클래스 영역 | 클래스가 메모리에 올라갈 때 (RAM(메모리)에 로딩) |
객체 생성 불필요 아무때나 사용가능 |
인스턴스 변수 iv | 인스턴스가 생성되었을 때 | 객체 생성 필요 객체를 생성해야 사용 가능 |
|
지역 변수 lv | 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) |
변수 선언문이 수행되었을 때 | 메서드를 실행해야 생성 실행동안 사용 가능 메서드 종료시 자동 제거 |
객체는 iv를 묶어놓은 것!
ch 6-12~13 클래스 변수, 인스턴스 변수
카드라는 객체
무늬, 숫자는 개별 속성
폭과 높이는 공통 속성
개별 속성 → 인스턴스 변수
공통 속성 → 클래스 변수
클래스 변수는 1개만 생성
인스턴스 변수는 객체마다 생성
calss Card {
// 개별 속성 → 인스턴스 변수
String kind;
int num;
// 공통 속성 → 클래스 변수
static int width = 100;
static int height = 250;
}
Card c = new Card();
// 인스턴스 변수 사용
c.kind = "heart";
c.num = 5;
// 클래스 변수 사용
Card.width = 200;
Card.height = 200;
// 참조 변수를 사용할 수 있지만 클래스 명을 사용하는게 바람직
ch 6-14~16 메서드
1. 작업 단위로 문장들을 묶어 이름 붙인 것
2. 값(입력)을 받아서 처리하고 결과를 반환(출력)
메서드는 클래스 안에 꼭 있어야 하고 함수는 클래스에 독립적
3. 장점
- 코드의 중복을 줄일 수 있음
- 코드의 관리가 쉬움
- 코드를 재사용할 수 있음
- 코드가 간결해져 이해도↑
4. 메소드 작성
- 반복적으로 수행되는 여러 문장을 메서드로 작성
- 메서는 하나는 한 가지 기능만 수행
5. 메서드 구성
선언부 + 구현부
반환이 없는 경우 선언부에 void 입력
반환타입 메서드이름 (타입 매개변수명n, ...) // 선언부
{
// 구현부
}
// 반환이 없는 경우
void 메서드이름 ()
{}
6. 지역변수
매서드 내 선언된 변수
매개변수, 구현부에 선언된 변수
다른 메서드와 변수명 겹쳐도 상관없음 메서드 내부에서만 존재
ch 6-17~19 메서드 호출
// 메서드 호출
메서드이름(값n, ...)
int result = add(3, 5) // 반환값이 있는 경우 변수 선언하여 저장
728x90