클래스의 정의
변수 : 하나의 데이터를 저장할 수 있는 공간
배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간
구조체 : 서로 관련된 여러 데이터(종류 관계X)를 하나로 저장할 수 있는 공간
클래스 : 데이터와 함수의 결합 (구조체 + 함수)
1. 시, 분, 초는 모두 0보다 크거나 같아야 한다.
2. 시의 범위는 0~23, 분과 초의 범위는 0~59이다.
객체지향언어에서는 제어자와 메서드를 이용해서 위에 2가지 조건을 반영할 수 있다.
public class Time {
private int hour;
private int minute;
private float second;
//hour의 값을 변경하기 위한 메서드
//지정한 값이 0보다 작거나 23보다 크면 종료(return)
public void setHour(int h) {
if ( h < 0 || h > 23 ) return;
hour = h; //지정된 값(h)이 유효한 경우에만 hour변경
}
}
선언 위치에 따른 변수 종류
- 클래스 영역 - iv (instance variable) , cv (class variable)
- 메서드 영역 - lv (local variable)
class Variable
{
int iv; // 인스턴스 변수
static int cv; // 클래스 변수 (static 변수)
void method()
{
int lv = 0; // 지역변수
}
}
변수의 종류 | 선언 위치 | 생성 시기 |
클래스 변수 (class variable) | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수 (instance variable) | 인스턴스가 생성되었을 때 | |
지역 변수 (local variable) | 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) |
변수 선언문이 수행되었을 때 |
인스턴스 변수는 클래스 영역에 선언되며, 인스턴트를 생성할 때 만들어진다.
인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
클래스 변수는 인스턴스 변수(iv)앞에 static만 붙이면 된다.
클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유하게 된다. (공통적인 값을 클래스 변수로)
클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고 바로 사용할 수 있으며
'클래스 이름.클래스 변수'와 같은 형식으로 사용한다.
지역변수는 메서드 내에 선언되어 메서드 내에서만 사용 가능하다.
메서드가 종료되면 소멸되어 사용할 수 없게 된다. for문 또는 while문의 블럭 내에
선언된 지역변수는, 지역변수가 선언된 블럭 { } 내에서만 사용 가능하다.
class Card{
String kind ; //무늬
int number ; //숫자 (무늬와 숫자는 개별 속성이므로 인스턴스 변수)
static int width = 100; //폭
static int height = 250; //높이 (폭과 높이는 공통 속성이므로 클래스 변수)
}
Card c = new Card(); // 인스턴스 변수를 사용하기 위해 객체생성
c.kind = "HEART" // 객체를 생성해야만 사용가능
card.width = 200 // 클래스 변수는 객체생성 없이 '클레스이름.클래스 변수'로 사용
'Java' 카테고리의 다른 글
자바의 정석 ( 생성자 / 생성자 규칙 / 기본 생성자 ) (0) | 2023.03.15 |
---|---|
자바의 정석 ( 메서드 / 메서드의 장점 / 인스턴스 메서드 / static 메서드 ) (2) | 2023.03.14 |
자바의 정석 ( 객체의 생성 / 객체의 사용 / 객체 배열 ) (1) | 2023.03.12 |
자바의 정석 ( 2차원 배열 / equals() / toString() / copyOf() / copyOfRange() / sort() ) (0) | 2023.03.10 |
자바의 정석 ( String 배열 / String 클래스의 주요 메서드 ) (0) | 2023.03.09 |