import java.util.Scanner;
public class InstanceMemberEx01 {
int a, b; // 인스턴스 필드
public InstanceMemberEx01(int c, int d) { // 생성자(필드 초기화)
a = c, b = d;
}
public void add() { // 인스턴스 메소드
System.out.println(a + b);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("2개 정수 입력");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
// 인스턴스 생성 및 생성자 호출
InstanceMemberEx01 im = new InstanceMemberEx01(num1, num2);
im.add(); // 인스턴스 메소드 호출
}
}
💡 인스턴스의 자기 자신을 의미하며, 주로 필드(전역 변수)와 메소드 또는 생성자 매개변수가 동일한 이름을 가질 때 인스턴스 필드임을 명확히 하기 위해서 사용한다.
import java.util.Scanner;
public class InstanceMemberEx02 {
int a, b; // 인스턴스 필드
public InstanceMemberEx02(int a, int b) { // 생성자(매개변수)
// this.a = 필드 / a = 매개변수
this.a = a;
this.b = b;
}
public void sum() {
int sum = 0;
if (a < b) {
for (int i = a; i <= b; i++) {
sum += i;
}
} else {
for (int i = b; i <= a; i++) {
sum += i;
}
}
System.out.println(sum);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("2개 정수 입력");
int a = sc.nextInt();
int b = sc.nextInt();
InstanceMemberEx02 im = new InstanceMemberEx02(a, b);
im.sum();
}
}
💡 같은 클래스 내의 다른 생성자를 호출할 때 사용하며, 생성자가 다양해질때(오버로딩) this() 메소드를 이용하면 중복된 코드를 간단하게 작성할 수 있다.
✅ 오버로딩 : 1개의 클래스에서 동일한 이름의 메소드 또는 생성자를 여러개 정의하는 것으로, 매개변수의 자료형, 개수, 순서를 다르게 하여 선언하여야 한다.
public class InstanceMemberEx03 {
String year;
String month;
String day;
public InstanceMemberEx03(String year) {
this(year, null, null);
}
public InstanceMemberEx03(String year, String month) {
this(year, month, null);
}
public InstanceMemberEx03(String year, String month, String day) {
this.year = year;
this.month = month;
this.day = day;
}
public static void main(String[] args) {
InstanceMemberEx03 im1 = new InstanceMemberEx03("2017년");
System.out.println(im1.year);
InstanceMemberEx03 im2 = new InstanceMemberEx03("2017년", "3월");
System.out.println(im2.year + im2.month);
InstanceMemberEx03 im3 = new InstanceMemberEx03("2017년", "3월", "13일");
System.out.println(im3.year + im3.month + im3.day);
}
}