Programing Language/Java

[Java] 인스턴스의 생성과 활용(Create & Using Instance)

vinedpillar 2022. 6. 10. 23:40

인스턴스의 생성

  • 클래스를 통해 생성된 객체를 인스턴스(instance)라고 합니다.

  • 클래스 외부에서 클래스의 속성이나 기능을 사용하기 위해서는 반드시 인스턴스를 생성해야합니다.

  • 인스턴스를 생성하기 위해서는 new 연산자를 사용해야 합니다.
    • new 연산자는 인스턴스를 생성한 후 인스턴스가 저장된 주소를 반환하는 기능을 가지고 있습니다.
    • new 뒤에는 생성하고자 하는 클래스의 컨스트럭터를 입력합니다.

  • 만약 컨스트럭터에 매개변수가 있는 경우 인스턴스 생성시 매개변수로 지정한 값을 입력해줘야 합니다. 
인스턴스의 생성

클래스명 변수이름 = new 컨스트럭터;

 

컨스트럭터의 호출 예시

// 기본 컨스트럭터를 호출하여 인스턴스 생성
Student st1 = new Student();

// 별도로 정의한 컨스트럭터를 호출하여 인스턴스 생성
// 위 예시에서 정의한 컨스트럭터를 활용하여 생성
// 지정된 매개변수 순서대로 name, age, grade를 입력
Student st2 = new Student("홍길동", 16, 'A');

 

  • 메모리 구조 
    • 생성된 인스턴스는 스택 메모리에 객체의 주소가, 스택 메모리에 객체의 값이 저장됩니다.

 

 

 

 

 

인스턴스의 활용

  • 인스턴스를 생성 후 객체의 필드나 메서드를 사용하기 위해서는 도트 연산자(.)를 사용해야 합니다.
    • 도트(.) 연산자: 특정 객체의 내부에 생성된 하위 항목에 접근할 수 있는 기능을 제공합니다.

  • 필드의 활용
    • 인스턴스가 가진 필드 값을 읽거나 변경할 수 있습니다.
인스턴스의 필드값 활용 예시

// 학생 클래스
class Student {
    String name;
    String address;
    int age;
    char grade;
    
    Student(String name, int age) {
    	this.name = name;
        this.age = age;
    }
}

// 학생의 정보를 확인할 클래스
public class StudentExample {
    public static void main(String[] args) {
        // name은 홍길동, age는 15인 Student 클래스의 인스턴스를 st1 변수로 생성
        Student st1 = new Student("홍길동", "15");
    
    	// 홍길동의 나이는 15세 입니다. 출력
    	System.out.println("학생 " + st1.name + "의 나이는 " + st1.age + "세 입니다.");
    }
}

 

  • 메서드의 활용
    • 메서드를 호출하여 활용할 수 있습니다.
    • 호출하려는 메서드가 매개변수를 가지고 있는 경우 반드시 매개변수를 입력해야 합니다.
    • 메서드의 반환값이 있는 경우 반환값을 변수에 저장할 수 있습니다.
      (이 경우 변수의 자료형은 메서드의 리턴 타입과 동일하거나 자동 형변환이 가능해야 함)
메서드의 활용 예시

// 학생 클래스
class Student {
    String name;
    String address;
    int age;
    char grade;
    
    Student(String name, int age) {
    	this.name = name;
        this.age = age;
    }
    
    // 학생 이름름과 나이를 표시하는 메서드
    public void showStudent() {
    	System.out.println(name + ", " + age);
    }
    
    // 점수에 따라 등급을 반환하는 메서드 
    public char getGrade(int score) {
    	char grade;
        if(score >= 90) {
        	grade = 'A';
        }
        else {
        	grade = 'F';
        }
        
        return grade;
    }
}

// 학생의 정보를 확인할 클래스
public class StudentExample {
    public static void main(String[] args) {
        // name은 홍길동, age는 15인 Student 클래스의 인스턴스를 st1 변수로 생성
        Student st1 = new Student("홍길동", "15");
    
    	// 홍길동, 15 출력
    	st1.showStudent();
        
        // 등급을 계산하는 메서드 실행 결과를 gdGrade 변수에 담기
        // F 출력
        char gdGrade = st1.getGrade(89);
        System.out.println(gdGrade);
    }
}