Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[JAVA] 클래스 맴버, 인스턴스 맴버 (생활코딩 공부 정리) 본문

개발공부/JAVA

[JAVA] 클래스 맴버, 인스턴스 맴버 (생활코딩 공부 정리)

jnnjnn 2024. 1. 30. 20:05

맴버란? 클래스 맴버와 인스턴스 맴버의 구분

-객체의 맴버란 메소드와 변수로 나눌 수 있다.

-앞에 static이 붙은 클래스 맴버와 그렇지 않은 인스턴스 맴버로 구분한다

 

인스턴스는 new 연산자를 통해 생성하여 참조변수 값에 담을 수 있다.

 

Tv t = new Tv();

 에서 t는 참조변수, new는 연산자, Tv()는 생성자다.

 

클래스 맴버

 

  • 클래스 메소드
    • 인스턴스를 통하지 않고 클래스에서 바로 함수에 접근할 수 있다는 특징이 있다.
    • '클래스 명.메소드 명()'으로 호출한다.
  • 클래스 변수
    •  인스턴스 변수가 같은 메소드에서 변수값을 다르게 주기 위해 사용된다면 클래스 변수는 고정된 변수값을 주기 위해 사용한다.
    • '클래스명.변수명'으로 호출한다

 

인스턴스 맴버

 

  • 인스턴스 메소드
    • 인스턴스를 생성해 인스턴스마다 같은 인자값의 여러 메소드들을 사용할 수 있다.
    • '참조 변수.메소드 명()'으로 호출한다
  • 인스턴스 변수
    • 인스턴스 생성시마다 새로운 변수가 생성된다
    • '참조 변수.변수명'으로 호출한다.

 

타입별 비교

 1. 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다.

 2. 클래스 메소드는 인스턴스 맴버에 접근 할 수 없다.

이유 : 클래스의 생성이 먼저고 인스턴스는 클래스 이후에 생성되는 것이기 때문에

public class Calculator2 {
	int left, right;
	static double PI = 3.14;
	static int base = 0;
	
	public void setOparands(int left, int right) {
		this.left = left;
		this.right = right;
	}
	
	public void sum() {
		System.out.println(this.left + this.right + base);
	}
	
	public void avg() {
		System.out.println((this.left + this.right)/2 + base);
	}
	
	public static void main(String[] args) {
		Calculator2 c1 = new Calculator2();
		c1.setOparands(10,20);
		c1.sum();

		Calculator2 c2 = new Calculator2();
		c2.setOparands(20,40);
		c2.sum();
		
		Calculator2.base = 10;
		
		c1.sum();
		c2.sum();
		
		System.out.println(c1.PI);
		System.out.println(c2.PI);
		System.out.println(Calculator2.PI);
		
	}

}

 

인스턴스가 setOparands 메소드를 통하는 이유?

: 같은 메소드를 사용하면서 동시에 여러개의 변수를 가질 수 있기 때문이다. c1, c2.. 마다 다른 변수값을 사용해야하기 때문에 setOparands 사용해서 인자값을 받아온다. 반면 클래스 메소드는 필요할때마다 인자를 주어서 사용한다.