인스턴스는 클래스를 컴퓨터 상에서 실체화한 것이다.
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class InstanceApp {
public static void main(String[] args) throws IOException{
PrintWriter p1 = new PrintWriter("result1.txt");
p1.write("Hello 1");
p1.close();
PrintWriter p2 = new PrintWriter("result2.txt");
p2.write("Hello 2");
p2.close();
}
}
가령 PrintWriter 객체를 사용한다고 할 때, Math 클래스와 달리 PrintWriter 객체는 new 키워드를 통해 인스턴스를 생성하여 사용한다.
PrintWriter p1 = new PrintWriter("result1.txt");
result1.txt 파일에 쓰기가 가능한 PrintWriter 클래스를 실제로 생성하여 이름을 p1으로 붙였다.
PrintWriter 클래스는 java.io 패키지에 속해 있어서 사용하기 위해서는 import 구문을 이용해서 불러들여야 한다. PrintWriter 인스턴스를 생성할 때에는 사용할 파일이 실제로 존재하지 않는다면 오류를 내기 때문에 이에 대한 처리를 해야 한다.
위에서처럼 Add throws declaration을 이용해서 에러 핸들링을 할 수 있다.
인스턴스는 객체를 다양한 상태에서 사용하고, 기능을 재사용할 경우가 많은 상황에서 유용한 방식이다.
인스턴스를 생성할 수 있는 클래스는 Java API Documentation에 Constructor Summary가 존재한다. 생성자가 있는 것이다.
반면 Math 클래스는 constructor(생성자)가 없다. Constructor가 없는 것은 일회용이라고 생각하면 된다. Constructor가 있다는 것은 contructor을 이용해서 인스턴스를 만드는 것이 허용된다는 것이다.
Constructor에 입력값으로 들어오는 값은 어떤 것이 들어와야 하는지에 대해 설명이 있고, 그 클래스를 사용하는 과정에서 발생할 수 있는 오류는 어떤 것들이 있는지 문서에 나와 있다.
어떤 클래스를 사용할 때 그 클래스를 만든 사람이 그 클래스를 인스턴스로서 활용하기를 원한다면 Constructor를 가지고 있다.
PrintWriter p1 = new PrintWriter("result1.txt");
위 코드에서, new 뒤에 붙인 것이 constructor이다. 그 constructor 앞에 new 를 붙이면 그 앞에 있는 p1 이 인스턴스가 된다.
[참고자료]
Java 클래스, 객체, 인스턴스의 차이 https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html
[Java] 클래스, 객체, 인스턴스의 차이 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'Language > Java' 카테고리의 다른 글
메소드 (Method) (0) | 2022.11.05 |
---|---|
상속 (Inheritance) (0) | 2022.11.03 |
패키지, 클래스, 변수, 메소드 간 관계 (0) | 2022.11.03 |
JVM이란 무엇인가 (1) | 2022.10.13 |
자바의 동작 원리 (1) | 2022.10.13 |