Develop/JAVA

JAVA - Method, Class, Instance

Rigid to Me 2022. 6. 13. 22:37

Method : Class의 기능을 하는 코드를 구현하는 부분

public class 클래스명 {
	public void 메서드명(){
    
    }
}

 

Class : Java의 모든 코드는 반드시 클래스 안에 존재

관련 코드를 나누어 별도의 클래스로 구성

public class 클래스명 {

}

Instance : 하나의 클래스를 복제해서 서로다른 데이터의 값과 서로같은 메소드를 가진 복제본을 만든 것

 

public class AccountingClassApp {
	
    // instance는 하나의 클래스륵 복제해서 서로다른 데이터의 값과 서로 같은 메소드를 가진 복제본이다.
	public static void main(String[] args) {
		
		
		// instance
		
		Accounting a1 = new Accounting(); // new를 사용하여 intance로 복제
		a1.valueOfSupply = 10000.0;
		a1.vatRate = 0.1;
		a1.expenseRate = 0.3;
		a1.print();
		
		Accounting a2 = new Accounting(); // new를 사용하여 intance로 복제
		a2.valueOfSupply = 20000.0;
		a2.vatRate = 0.05;
		a2.expenseRate = 0.2;
		a2.print();
	}
}

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);
//		System.out.println(instanceVar); // 클래스 메소드 안에서는 인스턴스 변수에는 접근 불가
	}
	public void instanceMethod() {
		System.out.println(classVar);
		System.out.println(instanceVar);
	}
	
	
}
public class StaticApp {

	public static void main(String[] args) {
		System.out.println(Foo.classVar); // 가능
//		System.out.println(Foo.instanceVar); // 에러발생
		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"; // classVar는 클래스이기때문에 변경됨
		System.out.println(Foo.classVar); // changed by f1
		System.out.println(f2.classVar); // changed by f1 
		
		f1.instanceVar = "changed by f1"; // instanceVar는 인스턴스 이기에 f2의 값은 변경되지 않고 f1의 값만 변경 됨 
		System.out.println(f1.instanceVar); // changed by f1
		System.out.println(f2.instanceVar); // I instance var
	}

}

해당 글은 Egoing님의 생활코딩을 참조하였으며, 다른 정보 습득 시 추후 변경 예정 될 수 있습니다.