728x90
클래스 : 원형
인스턴스 : 복제본
원형본인 클래스에서 인스턴스를 만들고 새 변수에 담아두고 이 인스턴스의 메소드를 호출하므로써 이 인스턴스를 조작할 수 있게되는 메커니즘
Print05.delimiter = "----";
Print05.A();
Print05.A();
Print05.delimiter = "====";
Print05.B();
Print05.B();
Print05.delimiter = "****";
Print05.A();
Print05.delimiter = "====";
Print05.B();
위와 같이 계속 변수의 파라미터를 계속 바꿔서 써야하는 상황이라면?
이럴 때 인스턴스 사용
print클래스 안에 있는 메소드들의 static들 삭제
static 역할
static 뒤에 오는 String(변수(?))이 클래스소속이라는 의미
- 이렇기에 인스턴스 소속 메소드를 쓰는게 목적이므로 스태틱을 삭제하여 메소드를 클래스 소속에서 인스턴스 소속으로 변경해주는 것
인스턴스 사용의 장점
클래스를 재료로 사용할 때 세분화시키고 싶다면 인스턴스로 부분적으로 각각 다른 네이밍과 기능을 지정해 사용할 수 있다
- 전처럼 중복된 코드를 계속 바꿀 필요 없이, 파라미터 ****가 필요하면 p1 인스턴스를 불러오고 +가 필요하면 p2를 부르면된다
전체코드
// OOP 5. 인스턴스
class Print05 {
public String delimiter = "";
public void A() {
// ... 1억줄 코드
System.out.println(delimiter); // printA() 메소드 안에 delimiter가 없다면
System.out.println("A"); // 이 파일 클래스(메인 메소드 위에)에서 찾아서 사용
System.out.println("A"); //
}
public void B() {
// ... 1억줄 코드
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
}
public class OOP05 {
public static void main(String[] args) {
// 클래스 : 원형본
// 인스턴스 : 복제본
//
// 원형본인 클래스에서 인스턴스를 만들고 새변수에 담아두고 이 인스턴스의 메소드를 호출하므로써
// 이 인스턴스를 조작할 수 있게되는 메커니즘
// Print05.delimiter = "----";
// Print05.A();
// Print05.A();
//
// Print05.delimiter = "====";
// Print05.B();
// Print05.B();
//
// Print05.delimiter = "----";
// Print05.A();
// Print05.delimiter = "====";
// Print05.B();
// 위와 같이 계속 변수의 파라미터를 계속 바꿔서 써야하는 상황이라면?
// 이럴 때 인스턴스 사용
// static : statice 뒤에 오는 String(변수(?))이 클래스소속이라는 의미
// 고로 위에 클래스 안 메소드에서 static 삭제
Print05 p1 = new Print05();
p1.delimiter = "****";
p1.A();
p1.A();
p1.B();
p1.B();
Print05 p2 = new Print05();
p2.delimiter = "++++";
p2.A();
p2.A();
p2.B();
p2.B();
// 전처럼 중복된 코드를 계속 바꿀 필요 없이,
// 파라미터 ****가 필요하면 p1 인스턴스를 불러오고 +가 필요하면 p2를 부르면된다
}
}
728x90
반응형
'JAVA > 생활코딩 JAVA 객체지향' 카테고리의 다른 글
JAVA 객체 지향 프로그래밍 - 7. 생성자(constructor)와 this (0) | 2022.02.01 |
---|---|
JAVA 객체 지향 프로그래밍 - 6. static (0) | 2022.02.01 |
JAVA 객체 지향 프로그래밍 - 4.2. 클래스 - 형식 (0) | 2022.01.31 |
JAVA 객체 지향 프로그래밍 - 4.1. 클래스 - 존재 이유와 기본형식 (0) | 2022.01.31 |
JAVA 객체 지향 프로그래밍 - 3. 변수와 메소드 (0) | 2022.01.31 |