본문 바로가기
JAVA/★객체지향

클래스 /인스턴스(instance)/ 객체(object), this //static 접근

by SEOKIHOUSE 2023. 3. 10.

*class - 설계도 / instance - 제품 / 객체(변수와 메소드의 집합) //클래스를 정의할떄도 변수와 메소드를 정의함

*멤버는 구성원 - 그 클래스의 구성원, 인스턴스의 구성원

*클래스 소유의 변수 -> 모든 인스턴스에서 같은 값을 가짐 static(그 클래스의 멤버가 되는것)

인스턴스 마다 값이 다르기 떄문에 left right 는 인스턴스의 소유 (인스턴스의 값에 따라 달라지는 것)

1)refactoring -> 중복된 로직 제거하는 것 (건강해진 코드~ 노버그~)

 

유지보수 쉽고 가독성 상향

 

2) 나타나게 된 배경

1. 메소드 나눠지면 문제? ->객체지향으로 그룹핑을 하면 해결~

코드양이 많아지면 코드 겹칠수도 있음 섞이고 섞이고~ -> 다른곳에 못씀

 

다른 코드 들어와서 right중복될수있음

 


내가 원하는 값 sum이나 avg 갖고 오고 싶을때 맘대로 가져오게 하기 (객체화)

1)


2)클래스/객체를 만든다는 것 ->우리가 메모리를 사용하는 것 -> left right 값-> 사용자정의 데이터타입을 만든다는 것(시스템적 의미로)

 

3)클래스변수

  • 클래스변수에 의해 만들어진 인스턴스들은 클래스변수가 갖고 있는 값을 자연스럽게 갖고있게 되는 것
  • ---static double PI =3.14; static한 변수가 된다는 것 - 클래스에 소속(변수를 모든 메소드에 동일한 값을 가짐)
  • static키워드가 있으면 클래스 멤버가 되고어디서든 사용 가능하다(매번 같은 값을 가져다가 연산해야 할 떄) ex) pI 3.14

ex)

class Calculator {

static double PI =3.14;

~~~

}

public class {

public static void main(String[] args) {

Calculator c1 = new Calculator();

sysout(c1.PI); ->3.14

Calculator c2 = new Calculator();

sysout(c2.PI); ->3.14

sysout(Calculator.PI) ->3.14


4)클래스 메소드

  • 3(/c1 c2 c3 등 다른값 가질 필요가 있을 때 인스턴스를 만듬 (new...) 과 달리 -필요할때마다 그냥 인자만 줘서 실행하는 경우 (일회용 느낌)
  • static이 있는 메소드는 클래스를 통해 직접적으로 접근해서 실행가능


5)

  1. 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다. (인메 -> 클래스 멤버, 메소드)
  2. 클래스 메소드는 인스턴스 맴버에 접근 할 수 없다. (클메 x 인메)  클래스를 기반으로 만들어진 인스턴스라 생성되지 않는 인스턴스에 접근할 수 없다라 이해하면 됨
    클래스 변수 ->Static Field
    인스턴스 변수->(Non-Static Field