인스턴스 멤버

맥모닝·2023년 11월 8일
0

Java

목록 보기
3/7

인스턴스 멤버

  • 인스턴스 멤버란 인스턴스가 가지고 있는 필드 및 메소드를 의미한다.
  • 인스턴스를 정의하는 이유는 인스턴스의 메소드와 변수를 사용하기 위해서이다.
  • 인스턴스(객체)를 생성하지 않고는 해당 필드 및 메소드를 사용할 수 없다.
    • 인스턴스 : 클래스 객체변수 = new 클래스();
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(); // 인스턴스 메소드 호출
    }
}
  • main 메소드에서 필드와 메소드를 호출하기 위해서 인스턴스를 생성하고 점(.) 연산자를 이용해서 호출하였다.
  • 인스턴스 멤버의 주요 내용은 인스턴스를 생성하지 않으면 사용이 불가능하다는 것이다.

this.

💡 인스턴스의 자기 자신을 의미하며, 주로 필드(전역 변수)와 메소드 또는 생성자 매개변수가 동일한 이름을 가질 때 인스턴스 필드임을 명확히 하기 위해서 사용한다.

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()

💡 같은 클래스 내의 다른 생성자를 호출할 때 사용하며, 생성자가 다양해질때(오버로딩) 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);
    }
}
  • 주의사항 : 생성자에서만 사용이 가능하고 반드시 호출하는 곳의 첫 번째 문장에 작성해야 한다.

참고 사이트

profile
필요한 내용을 공부하고 저장합니다.

0개의 댓글