Spring
[Spring]강의 들으며 헷갈리는 JAVA 문법 정리
haenni
2023. 11. 22. 17:42
📎 강의 들으며 헷갈리는 JAVA 문법 정리
📌객체와 인스턴스가 헷갈려요
:객체와 인스턴스가 헷갈릴 때는 아래의 동영상도 참고하자
https://www.youtube.com/watch?v=nHR1hfIrBwI
🙋🏻♀️클래스, 객체, 인스턴스는 각각 무엇인가요 ?
💡클래스 : 객체(Object)를 만들어 내기 위한 틀이며, 만들어 낼 객체의 속성(변수 등)과 메서드의 집합을 담아놓은 것 입니다.
객체 : 클래스로부터 만들어지는 실체, 클래스로 선언된 변수를 객체라 합니다. Foo f1 = new Foo() => “f1 객체 생성”
인스턴스: 객체가 메모리에 할당이 된 상태. 런타임에 구동되는 객체를 말합니다.
사진의 person a = new Person(); 코드는 객체를 생성함과 동시에 인스턴스로 만든 것이며
Person b; 처럼 클래스를 데이터 타입으로 둔 변수를 선언한 상태를 객체라고합니다.
이후 객체 b에 new Person(“홍철”, 1, 1000);을 하여 메모리를 할당하게 되면
인스턴스가 되는 것입니다.
new Person()을 하게 되면 메모리를 할당합니다.

📌Static이란 ?
🙋🏻♀️ Static이 정확히 무엇이고 무슨 역할을 하는지 헷갈려요
💡 Static이란 해당 멤버(변수, 메서드)가 인스턴스에 속하는 것이 아니라 클래스에 속한다는 것을 나타냅니다.
1. 정적 변수 (Static Variables): 클래스의 모든 인스턴스가 공유하는 변수입니다. 클래스의 모든 객체가 이 변수를 동일한 값으로 공유하게 됩니다.
2. 정적 메서드 (Static Methods): 인스턴스에 속하지 않고 클래스 수준에서 동작하는 메서드입니다. 정적 메서드 내에서는 정적 변수만 직접 접근할 수 있습니다.

📌Static은 this를 사용하지 못한다?
🙋🏻♀️ Static은 this를 사용하지 못하나요 ?
💡 네 맞습니다 ! 정적 메서드나 정적 변수는 인스턴스에 속하지 않기 때문에 this 키워드를 사용할 수 없습니다
this는 현재 인스턴스를 참조하는데 사용되며, 정적 메서드는 특정 인스턴스에 묶이지 않고 클래스 자체에 속하기 때문에 this를 사용할 수 없어요.

📌객체를 생성할 때 해당 클래스의 생성자가 무조건 호출된다 ?
🙋🏻♀️”Foo” 라는 클래스가 존재 하다고 할 때, Foo f1 = new Foo(); 라고하면 객체를 생성하면서 생성자가 호출되나요 ? 그렇다면 생성자”만” 호출이 되는건가요?
💡 맞습니다. 객체를 생성할 때는 해당 클래스의 생성자가 호출됩니다. 생성자는 객체를 초기화하는 역할을 합니다.
만약 Foo 클래스에 생성자가 정의되어 있다면, new Foo();를 호출할 때 해당 생성자가 실행됩니다.
생성자 내부에서는 객체 초기화에 필요한 작업들을 수행할 수 있습니다.
또한 new Foo();를 호출할 때는 해당 클래스의 생성자만 실행됩니다.
생성자는 객체가 생성될 때 한 번 호출되어 초기화 작업을 수행하고, 이후에는 명시적으로 다른 메소드를 호출해야 합니다.