package oop;
class Pos {
// 필드
// 1) 객체가 생성되면 객체의 속성을 저장할 수 있는 변수이다
// 2) 필드는 초기값을 지정할 수 있다. 단, 초기값을 지정하지 않으면 자료형에 맞는 0으로 채워진다
// 3) 메서드에서 조건없이 필드를 참조할 수 있다.
// 4) 메서드의 지역변수와 이름이 중복되면 this를 이용하여 구분할 수 있다
int x, y;
// 메서드
// 1) 객체의 기능을 담당하는 함수이다
// 2) 메서드는 함수이므로 반환형, 함수이름, 매개변수를 지정하고 내용을 작성한다
// 3) 메서드에서 조건없이 필드를 참조할 수 있다.
// 4) 서로 다른 객체라도 같은 메서드를 수행할 수 있다. 내용은 필드의 값에 따라서 달라진다
// 5) 메서드 내부에서 연산자 및 제어문을 사용할 수 있다
// 6) 메서드는 오버로딩이 가능하다
void show() {
System.out.println("x : " + x + ", y : " + y);
}
// 생성자
// 1) 객체를 생성하기 위해서 반드시 호출해야 하는 함수
// 2) 반환형을 작성하지 않는다
// 3) 함수 이름은 클래스의 이름과 같아야 한다
// 4) 역시나 함수이므로 오버로딩이 가능하다
// 5) 생성자 안에서 또다른 생성자를 호출할 수 있다
// 6) 생성자 내부에서 다른 생성자를 호출할때는 this() 형식으로 호출해야 한다
// 7) 생성자 내부에서 다른 생성자를 호출하기 위해서는 반.드.시 첫번째 줄에서만 호출할 수 있다
Pos() {
System.out.println("기본 생성자 호출 !!");
}
// Constructor call must be the first statement in a constructor
// 생성자 호출은 반드시 생성자 내의 첫번째 줄에서만 이루어져야 합니다
Pos(int x, int y) {
this();
System.out.println("오버로딩 생성자 호출 !!");
this.x = x;
this.y = y;
}
}
public class Ex04 {
public static void main(String[] args) {
Pos ob1 = new Pos(); // 값을 전달하지 않으면
ob1.show(); // 필드의 초기값은 0이다
System.out.println("=== 구분선 ===");
Pos ob2 = new Pos(3, 4);
ob2.show();
}
}