인스턴스의 생성
- 클래스를 통해 생성된 객체를 인스턴스(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);
}
}
'Programing Language > Java' 카테고리의 다른 글
[Java] 자바의 분기문(Branching Statements) (0) | 2022.06.14 |
---|---|
[Java] 클래스의 구성 요소(Member of Class) (0) | 2022.06.11 |
[Java] 오브젝트와 클래스(Object & Class) (0) | 2022.06.02 |
[Java] 다차원 배열(Multi-dimensional Arrays) (0) | 2022.06.02 |
[Java] 자바의 배열(Arrays) (0) | 2022.05.26 |