백엔드 수업 #06 클래스 - 05 클래스의 구성 멤버

sookyoung.k·2022년 11월 15일
1

와 오늘... 오늘 진짜 힘들었다. 오늘 학원에서 클래스와 객체를 배웠는데 진짜 머리 아팠다 ㅠㅠ 그래도... 어제보단 좀 이해가 되는 것도 같다. 객체는 너무 어렵다. 개같은거... 은비언니한테 설명을 해야 했는데 너무너무너무 힘들었다 그래도 언니가 있어서 든든하다... 내가 쌉소리를 해도 방향을 잘 잡아준다 근데 내가 금붕어라... 언니... 날 답답해하지 말아줘욧... 뒤 돌면 까먹는 청순한 나의 뇌

암튼 오늘도 정리를 시작해봅니닷

클래스의 구성 멤버: 필드(Field), 생성자(Constructor), 메소드(Method)

계속 하다보니 객체, 클래스, 필드, 메소드의 개념은... 모호하게나마 조금 이해가 되는 것 같은데 생성자는 여전히 개같이 어렵다. 정리를 하면서 조금 더 이해를 할 수 있도록 노력해보자!

public class ClassName { // 클래스 선언 및 클래스 이름 (클래스명은 대문자) 
	// 필드: 객체의 데이터가 저장되는 곳
    int fieldName;
    
    // 생성자: 객체 생성 시 초기화 담당 역할
    ClassName() {...};
    
    // 메소드: 객체의 동작에 해당하는 실행 블록
    void methodName() {...};
}

생성자의 개념이 어렵고 짜증나는건 대체 이새낄 왜 써야 하는지, 얘가 왜 필요한지 그 필요성에 대해서 체감을 못 해서 그런 것 같다. 초기화라는 것도... 내가 아는 '초기화'는 0으로 리셋하는건데 여긴 값을 주는거고... 생성... 뭘 또 생성해. 객체도 생성했짜나. 아직 답을 찾진 못했다. 오늘은 답을 찾을 수 있길...

필드 (멤버변수, 속성)

객체고유 데이터, 부품 객체, 상태 정보를 저장하는 곳이다. 필드를 선언하는 것이 마치... 변수 선언처럼 보이기 때문에 상당히 헷갈리게 만든다. 하지만 필드랑 변수는 다르고, 당연히 필드를 변수라고 부르지도 않는다. 객체의 데이터가 저장된 곳이라고 이해를 해봤다.
변수의 경우에는 생성자와 메소드 내에서만 사용이 되고, 생성자와 메소드가 실행 종료되면 자동으로 소멸한다.
하지만 필드는 생성자와 메소드 전체에 사용된다! 그리고 객체와 연결이 되어있다 보니까 객체가 소멸되지 않는 한 객체와 함께 존재한다는 차이가 있다.

그리고, 필드는 멤버 변수라고도 한다! 아이돌 멤버같은 느낌이라고 생각하면 된다고 함...
멤버 변수는 (= 필드는) 클래스의 속성을 구현한다!!!

예를 들어 자동차라는 객체를 생각해봅시다!
그럼 그 자동차라는 객체의 속성에는 뭐가 있을까요? 제작 회사, 모델명, 컬러, 최대 속도, 속도 등이 있을 것입니다. 그렇죠?! 그게 바로 필드에 저장된 내용들이라는 것임. 객체의 데이터를 저장하는 곳! 속성들이 저장되어 있는 곳!!!

public class Car { // 클래스를 선언했고, Car라는 클래스
	String company;
    String model;
    String color;
    int maxSpeed;
    int speed;
    // Car라는 객체의 데이터들!!! 이 저장된 필드!!! 
}

멤버변수를 만들 때는 1. 속성에 따라 알맞은 자료형을 사용하면 되고 2. 속성을 표현할 수 있는 변수명을 선언해주면 된다.

생성자

new 연산자로 호출되는 특별한 중괄호 {} 블록이라고 한다.

역할: 객체 생성 시 초기화를 담당!

필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하게 한다.
메소드와 비슷하게 생겼지만 (이래서... 존나 헷갈리는 것 같다. 짜증나는 샛기... 계속 은비언니나 강사님한테 생성자가 변수냐고 물어봤는데 아니었구나. 일단 아직 이해를 못 했기 때문에 외우고 넘어가보도록 한다.) 클래스 이름으로 되어 있고 리턴 타입이 없다.

메소드 (기능)

객체의 동작에 해당하는 중괄호 {} 블록! 중괄호 블록의 이름이 바로 메소드의 이름이다. 메소드를 호출하면 블록 안의 코드가 일괄 실행된다.

메소드는 필드를 읽고 수정하는 역할을 하고, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다.

객체 간의 데이터 전달의 수단으로도 사용된다. (메소드는 메소드를 호출할 수도 있다.) 외부로부터 매개값을 받을 수도 있고 실행 후 어떤 값을 리턴할 수도 있다.

사실 이 부분은 책의 내용을 거의 가져왔다.(양심고백) 이건 이 설명보다는 예제를 보면서 봐야 이해가 더 잘 된다. 그래도 내가 이해했던 부분은 굵게 표시함... 잉잉... 어려워

profile
영차영차 😎

0개의 댓글