모든 클래스는 인스턴스화 될때 생성자를 사용한다.
생성자가 하는 일은 객체가 될 때 필드를 초기화 하는 역할을 수행한다.
생성자의 특징
1. 클래스이름() { ... } // 매개변수가 없는 생성자 선언
2. 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언
class NoteBook{
NoteBook() { // 클래스 이름과 같은 이름으로 생성된 기본 생성자(1)
}
NoteBook(int size, int weight){ // 클래스 이름과 같은 이름으로 생성된
this.size = size; // 매개변수가 있는 생성자(2)
this.weight = weight;
}
}
기본생성자(default constructor)
모든 클래스에는 기본적으로 생성자가 반드시 존재한다.
만약 직접 생성자를 작성하지 않으면 JAVA가 자동으로 작성 이렇게되면 개체 초깃값을 설정할 수 없다. 이것을 "기본생성자"라고 한다.
Class NoteBook{
int size;
int weight;
int volume;
Sting color;
boolean power;
void power(){
power = !power; // 참이면 거짓, 거짓이면 참
}
void volumeUp(){
volume++;
}
void volumeDown(){
volume--;
}
}
매개변수 생성자(parameter constructor)
만약 클래스의 필드를 원하는 값으로 지정(초기화)하고 싶다면 매개변수가 있는 생성자를 사용할 수 있다.
Class Sandwhch{
String ingredient; // 재료
Sandwich(){ // 기본 생성자
}
Sandwich(String ingredient){ // 매개변수가 있는 생성자
this.ingredient = ingredient;
}
}
생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다.
public class Sandwhch{
String name;
int number;
public Sandwhch(){
}
public Sandwhch(String name){
this.name = name;
}
public Sandwhch(String name, int number){
this.name = name;
this.number = number;
}
}
this.
this는 클래스에서 생성된 인스턴스를 뜻한다.
this는 다른 생성자를 호출하는 기능을 가지고있음 또한 클래스 속성과 매개변수의 이름이 같은 경우 this 사용
this를 붙이면 생성자를 통해서 샌드위치 클래스 속성인 "ingredient"에 값을 입력할 수 있습니다.
변수는 클래스 변수, 인스턴스 변수, 지역 변수 모두 세 종류.
변수의 종류를 결정짓는 요소는 '변수의 선언된 위치' 이므로 변수의 종류 파악하기 위해서는 변수가 어느 영역에 선언되었는지 확인하는 것이 중요
public class test {
int iv; // 인스턴스 변수 : 인스턴스가 생성될 때 생성
static int cv; // 클래스 변수 : 인스턴스 변수에 static만 붙여주면 됩니다.
void method() {
int lv; // 지역 변수 : 메소드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수
}
}
클래스 변수
멤버 변수 중에 static
이 붙은 것
생성시기는 클래스가 메모리에 올라갈때 생성됨
따라서, 한 클래스의 모든 인스턴스들이 공통적인 값을 유지하는 속성의 경우 사용
클래스 변수는 인스턴스와 달리 모든 인스턴스가 공통된 저장공간을 공유하게 된다. (그래서 공유변수라고도 함)
클래스가 로딩될 때 생성되서 프로그램이 종료 될 때 까지 유지되며, public
을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 전역변수(global variable)의 성격을 갖고 있다.
인스턴스 변수(객체변수)
지역변수