class 클래스이름 {
멤버변수;
void 메서드이름() {
...
}
}
class Student {
// 멤버변수
String name = "자바학생";
int age = 20;
}
-> class라는 예약어와 클래스의 이름을 명시하고 {...}블록을 구성한다.
-> 멤버변수는 여러개 존재할 수 있다. 이 때, 값을 선언과 동시에 할당할 수도 있고, 객체를 통해 간접적으로 할당할 수도 있다.
-> 메서드는 여러개 존재할 수 있다.
-> 클래스 안에 포함된 멤버변수와 메서드를 특성에 따라 그룹화 하기 위한 기법이 클래스를 작성하는 것이라고 이해할 수 있다.
-> 값 접근
객체이름.멤버변수; (car.door;)
-> 객체 안에 포함된 변수의 값을 다른 변수에 복사하는 경우
변수 = 객체이름. 멤버변수;
-> 객체 안에 포함된 변수의 값에 다른 값을 대입하는 경우
객체이름.멤버변수 = 값;
-> 객체 안에 포함된 메서드를 호출하는 경우
객체이름. 메서드이름();
->객체 안에 포함도니 메서드에 파라미터를 전달하는 경우
객체이름.메서드이름(값1,값2,...);
std.name = "이순신";
std.age = 20;
std2.name = "홍길동";
std2.age = 30;
- 클래스란 객체를 위한 틀을 제공하는 것이기 때문에 클래스 작성과정에서 멤버변수에 대입된 값은 객체를 통하여 멤버변수의 값을 지정하기 전까지 사용될 "기본값"으로서의 의미한다.
- 객체를 통하여 새로운 값이 대입되면 클래스 작성시에 멤버변수에 대입한 값은 의미를 잃어버리게 된다.
- 때문에 일반적으로 클래스 작성시에는 멤버변수에 값을 지정하지 않는다.
클래스 안에서 선언된 변수로서, 클래스 블록 범위 안에서 유효하다.
메서드 안에서 선언된 변수로서, 메서드의 블록을 빠져나가지 못한다. 그러므로 다른 메서드는 해당 변수를 인식하지 못한다. 이 규칙은 조건, 반복문과 같은 블록{}을 형성하는 모든 경우에 해당이 된다.
int a = null; // error
double b = null; // error
String c = null; // 가능
int[] d = null; // 가능