Class를 구성하는 요소.
속성을 표현하는 field와 기능을 표현하는 method , class를 객체화 해주며 생성된 객체의 필드를 초기화 해주는 constructor가 있다.
public class MemberEx{ // 클래스
int fieldName; // 필드 == 클래스 안에 있는 변수
public MemberEx(){ // 생성자 (빈 생성자는 생략 가능)
}
public void methodName(){ // 기능을 구현하는 메소드
}
}
class에 포함된 변수를 의미한다.
필드는 클래스내에서 선언된 위치에따라 구분된다.
어떤 특정 작업을 수행하기 위한 명령문의 집합.
메소드도 필드와 같이 클래스내에서 선언된 위치에 따라 구분된다.
인스턴스가 생성(객체화)될 때 호출되는 ' 인스턴스 초기화 ' 메소드 이다.
인스턴스 초기화란 클래스가 객체화 될때 인스턴스 객체의 필드들의 초기값을 설정해주는것을 의미한다.
즉, 인스턴스 변수의 초기화 작업, 인스턴스 생성시 실행되어야할 작업을 위해서 사용된다.
컴파일을 할 때 클래스에 생성자가 하나도 정의 되어 있지 않으면 컴파일러가 자동으로 기본 생성자를 생성해준다.
클래스에 매개변수가 있는 생성자를 정의해주었다면 기본생성자를 만들어주어야 사용이 가능하다.
public class Aclass { // 생성자를 정의 하지 않은 클래스
// 객체화 할 때 굳이 int val의 값을 초기화 할 필요가 없다면 생성자를 생성 해 줄 필요가 없다
// 컴파일러에서 자동으로 기본 생성자를 생성 해주기 떄문
int val;
}
public class Bclass { // 매개변수가 있는 생성자를 생성한 클래스
int val;
public Bclass(int val){ // 매개변수가 있는 생성자
this.val = val;
}
}
public class Test{
public static main(String[] args) {
Aclass a = new Aclass();
Bclass b = new Bclass(); // 빈 생성자를 만들어 주지 않아서 에러 발생
}
}
Bclass를 객체화 할 때 에러가 나지 않게 하려면?
public class Bclass{
int val;
public Bclass(){
// 빈 생성자를 생성 해준다
}
public Bclass(int val){
this.val = val;
}
}
or
// 매개변수가 있는 생성자를 사용
public class Test{
public static main(String[] args) {
Aclass a = new Aclass();
Bclass b = new Bclass(1); // int형 데이터를 매개변수로 주어서 초기화
}
}