14일차// 객체지향 프로그래밍 간단정리(2)✍// 클래스 맴버과 인스턴스 맴버
다시 복습해보자👊👊👊
맴버(member)는 영어로 구성원이라는 뜻이다. 객체도 구성원이 있는데 아래와 같다.
- 변수
- 메소드
클래스 변수
p1 은 Point3D 객체의 인스턴스이다.
Point의 입력값으로 전달한 x와 y값을 인스턴스의 변수로 지정할 수 있다.(this)
인스턴스의 소유가 아닌 클래스의 소유 변수
Main에서 PI를 호출할 수 있는 방법은 두가지이다.
System.out.Println(c1.PI)
System.out.Println(Calculator.PI)
PI는 클래스의 변수이지만 인스턴스를 이용해서 접근이 가능하다.
PI는 클래스를 통해 직접 접근도 가능하다.
하나의 클래스를 바탕으로 서로 다른 상태를
가진 인스턴스를 만들면 서로 다른 행동을 하게 된다는 것을 알 수 있다.
하나의 클래스가 여러개의 인스턴스가 될 수 있다는 점이 객체 지향이 제공하는
가장 기본적인 재활용성이라고 할 수 있다.
클래스 메소드
인스턴스가 없이도 Calculator2.sum(10, 20); 이렇게 클래스의 메소드를 불러올수있다.
만약 메소드가 인스턴스 변수를 참조하지 않는다면
클래스 메소드를 사용해서 불필요한 인스턴스의 생성을 막을 수 있다.
1. 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다.
2. 클래스 메소드는 인스턴스 맴버에 접근 할 수 없다.
제품(인스턴스)는 공장(클래스)를 통해 나온 제품(인스턴스)이기에
제품의 생산데이터(클래스변수,클래스메소드)를 보고 싶으면
공장에 관련 자료를 요청 및 컴플레인을 통한 수정 및 확인이 가능하다.
하지만 공장(클래스)는 생산하지도 않은 제품(인스턴스)의 실물 사진이나 실물 동영상을 확인할 수 없다.
-> 인스턴스는 이미 허가되었기 때문에 클래스에 접근이 가능하다고 보자!
그러므로 공장(클래스)는 제품의정보(인스턴스변수,인스턴스메소드)에 접근할 수 없다.
static int static_variable 변수는 static이 앞에 붙어있기 때문에 Class의 변수이다.int instance_variable 변수는 instance의 변수이다.
static 이 붙으면 무조건 Class 메소드, 변수이다.
- 인스턴스 변수 -> Non-Static Field
- 클래스 변수 -> Static Field