인스턴스

 

클래스와 인스턴스 차이점은 클래스가 원본이라면 인스턴스는 원본의 구성을 일부 바꿀 수 있다

 

인스턴스는 클래스를 재료로 사용할 때 세분화시키고 싶다면 클래스의 내용을 일부 바꾸고 이름으로 구분지어 쓸 수 있다

 

인스턴스로 사용할 때에는 static을 제거해주어야 한다

 

class Print {
    public String delimiter = "";
 
    public void A() {
        System.out.println(delimiter);
        System.out.println("A");
        System.out.println("A");
    }
 
    public void B() {
        System.out.println(delimiter);
        System.out.println("B");
        System.out.println("B");
    }
}

 

public class MyOOP {
    public static void main(String[] args) {
    	Print p1 = new Print();
    	p1.delimiter = "----";
    	p1.A();
    	p1.A();
    	p1.B();
    	p1.B();
    	
    	Print p2 = new Print();
    	p2.delimiter = "****";
    	p2.A();
    	p2.A();
    	p2.B();
    	p2.B();
         
        p1.A();
        p2.A();
        p1.A();
        p2.A();
    }
}

 

static

 

Static은 Class 소속이고  Static이 없으면 Instance 소속으로 보면 된다

 

Class 로 Instance를 복사해서 만들었을 때, Instance 안에 들어가있는 Static 값을 변경하면 기존에 있는 method,Variable 의 값도 같이 변경된다.

 

Instance 안에 들어가있는 Static이 없는 Instance method,Variable의 값을 변경할 경우 복제품인 Instance 에만 적용된다.

 

Class 소속에선 Instance를 부를수 없지만, Instance 소속에선 Class,Instance 모두 부를수 있다.

 

class Foo{
	public static String classVar = "I class var";
	public String instanceVar = "I instance var";
	public static void classMethod() {
		System.out.println(classVar); // Ok
//		System.out.println(instanceVar); // Error
	}
	public void instanceMethod() {
		System.out.println(classVar); // Ok
		System.out.println(instanceVar); // Error
	}
}
public class StaticApp {

	public static void main(String[] args) {
		System.out.println(Foo.classVar); // OK
//		System.out.println(Foo.instanceVar); // Error
		Foo.classMethod();
//		Foo.instanceMethod();
		
		Foo f1 = new Foo();
		Foo f2 = new Foo();
		
		System.out.println(f1.classVar); // I class var
		System.out.println(f1.instanceVar); // I instance var
		
		f1.classVar = "changed by f1";
		System.out.println(Foo.classVar); // changed by f1
		System.out.println(f2.classVar); // changed by f1
	
		f1.instanceVar = "changed by f1";
		System.out.println(f1.instanceVar); // changed by f1
		System.out.println(f2.instanceVar); // I instance var
	}

}

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

공부(16)  (0) 2021.09.25
공부(15)  (0) 2021.09.25
공부(13)  (0) 2021.09.25
공부(12)  (0) 2021.09.24
공부(11)  (0) 2021.09.24

+ Recent posts