static / instance
gangnam-americano.tistory.com/20
[JAVA] static과 인스턴스(Instance)
static과 인스턴스(Instance) 1. static이란? static이란 사전적 의미로 static은 정적인, 고정인 이라는 뜻이다. 사실 static이란 개념은 Java에서만 쓰이는 개념은 아니다. 넘어가서, static은 변수를 선언하거
gangnam-americano.tistory.com
jihyehwang09.github.io/2020/03/21/java-static-method-and-instance-method/
Static method VS Instance method
Java에서 Static method와 Instance method는 어떤 차이가 있는지,언제 사용하는지에 대해 알아보자. Static method는 Class method라고도 불린다.클래스 내부에 정의하지만, 인스턴스에는 속하지 않는다는 특징
JihyeHwang09.github.io
헷갈렸던 부분
---------------------------------------------------------------------------------------------------------------------------------
분리했었던 프린트를 instance메소드로 바꾸기 위해 main함수 안에서 printLotto라는 객체를 생성해주었다
-> printLotto 객체의 print 함수사용
(이 때, print 함수안에서 lotto 객체의 함수들 사용하기 때문에 이것은 파라미터로 넘겨받아야 함!)
근데 파라미터로 넘겨받는 건 static 메소드 아니었나
getNum함수와 print함수만 파라미터로 값을 넘겨받고 있다
instance 메소드로 바꿨지만 값을 넘겨받아야 할 것은 넘겨받아야 하니까..
-> 라고 이해하고 넘어갔었는데 이건 상속해줘야 함 (Has A 상속)
----------------------------------------------------------------------------------------------------------------------------------
가장 큰 차이점은 객체 생성 여부
static method 는 객체생성없이 클래스명, 메소드명으로 호출 가능
instance method 는 반드시 객체생성 후 호출가능
1. static
static은 변수를 선언하거나 메소드를 생성할 때 같이 붙여 써주는데
static으로 선언한 변수는 "프로그램이 실행될 때 Java메모리에 할당되며, 이는 프로그램이 종료될 때 해제된다"고 한다.
위 굵은 글씨를 해석하면, static은 "해당 클래스의 객체를 생성하지 않고도 static자원에 접근이 가능하다"라는 뜻이다.
2. 인스턴스(Instance)
인스턴스란 클래스에 속하는 객체를 말한다.
예를들어 위처럼 계산기(Calculator)라는 클래스가 있고, 프로그램을 개발하며 계산이 필요한 부분에서 계산을 위해
계산기(Calculator) 객체를 생성하면 계산기(Calculator)라는 인스턴스가 생성되는 것이다.
클래스를 객체를 만들기 위한 틀이라 생각하면 되는데,
쉽게말해 피자를 만드는 과정을 예로 들겠다.
피자라는 클래스는 도우, 토핑, 소스, 재료 등 피자를 만드는데 필요한 여러가지 구성요소(멤버변수)를 가지고 있다.
여기서 만들어지는 결과물(Object)은 피자라는 객체가 되며, 만들어지는 방식에 따라 여러가지 피자(Instance)가 생성될 수 있으며
이러한 피자가 만들어지는 과정, 즉 피자를 굽는다는 행위가 '인스턴스화 하다'라고 보면 된다.
1) 피자(클래스)라는 틀에서 -> 2) 피자를 만든다(인스턴스화) -> 3) 이에 결과물로 피자(인스턴스)가 생성된다
피자를 굽는 과정에 따라 여러가지 다른 피자들이 만들어 지는데 이 피자들을 인스턴스라고 말한다.
따라서,
( Lotto클래스는 구조 틀이고, Lotto클래스의 인스턴스 lotto(객체)는 그 구조 틀을 실체하게 하는 것)
static은 프로그램이 실행될 때 메모리 영역에 할당되므로,
인스턴스 과정(객체생성)없이 모두가 접근할 수 있는 공유자원인 것이다.
여기서 추가로, 모두가 접근할 수 있는 공유자원이기 때문에 static에는 this라는(내것이라는) 개념이 존재하지 않는다