Spring/Java

[Java - OOP 기초1] 클래스와 객체

jungha_k 2022. 9. 7. 00:00

🧱클래스와 객체

클래스 : 객체를 생성하는데에 사용하는 하나의 틀, 설계도

객체 : 클래스를 통해 생성된 객체 = 인스턴스

 

*인스턴스와 객체의 차이? : 객체 >= 인스턴스(사실상 같다!) 그러나 인스턴스는 어떤 '객체로부터 생성된것인지'를 강조

 

 

✨클래스 정의

class 클래스명 { //클래스 정의
 ~~~~~~
}

 

✨클래스의 구성 요소

public class ExampleClass {
	int x = 10; // (1)필드
	void printX() {...} // (2)메서드
	ExampleClass {...} // (3)생성자
	class ExampleClass2 {...} // (4)이너 클래스
}

(1)필드 (=속성): 클래스의 속성을 나타내는 변수

(2)메서드 (=기능) : 클래스의 기능을 나타내는 변수

(3)생성자 : 클래스의 객체를 생성하는 역할 = 인스턴스 객체를 초기화해줌

(4)이너 클래스 : 클래스 내부의 클래스

 

클래스의 멤버 = (1),(2),(4) 

 

 

 

✨객체의 생성 : new 키워드를 이용하여 생성

객체 생성 후에는 ‘ . ’포인트 연산자를 통해 객체멤버에 접근 가능함

class CarTest {
	public static void main(String[] args) {

	Car bmw = new Car(); // Car 클래스를 기반으로 생성된 bmw 인스턴스
	Car tesla = new Car(); // Car 클래스를 기반으로 생성된 tesla 인스턴스
	Car audi = new Car(); // Car 클래스를 기반으로 생성된 audi 인스턴스
}
클래스명 참조_변수명; // 인스턴스를 참조하기 위한 참조변수 선언
참조_변수명 = new 생성자(); // 인스턴스 생성 후, 객체의 주소를 참조 변수에 저장

 

참조 변수 : 실제 데이터 값 X, 힙 메모리의 주소값을 저장 O

new : 객체를 힙 메모리에 넣어라!

 

ex) 클래스                   참조_변수명           =     new                              생성자();
      Person                           p                    =      new                             Person();
----------------------------------------------------------------------------------------------------------------------------
클래스 영역에 저장  스택영역 주소값         힙메모리에 저장       인스턴스 생성, 힙 메모리 영역

 

필드값 : 실제 저장공간은 객체 내부

메서드 : 객체 내부가 아닌 클래스 영역에 저장되기 때문에,

여러번 선언할 필요 X, 한번만 저장해두고 필요할 때 찾아쓰기 O

 

 

 

객체 접근 및 활용

참조 변수명.필드명 // 필드값 불러오기
 참조 변수명.메서드명() // 메서드 호출

ex)

public class 저쩌고{
	public static voidd main(String[] args){

		어쩌고 A = new 어쩌고 ("~", "~"); //필드 호출

		어쩌고.메서드1(); //메서드 호출
		어쩌고.메서드2();

	}
}

class 어쩌고 {

필드 및 메서드 선언

}

이번에 객체 지향에 대해 다시 배우면서

용어만 익숙해져있지 정확한 뜻은 설명할 수 없단 것을 깨달았다ㅜ_ㅜ

자바의 정석을 듣진 않았지만 남궁성 강사님이 왜 10번 이상 돌려들으라 했는지 알거같음,,