본문 바로가기
Java

[Java] 객체와 클래스 1 : 객체 지향 패러다임과 멤버 변수

by 스응 2023. 2. 3.
728x90
728x90

#  관련 포스팅

  1. (현재 글) 객체 지향 패러다임과 멤버 변수 : https://young0105.tistory.com/13

  2. 메서드 : https://young0105.tistory.com/28

  3. 생성자 : https://young0105.tistory.com/29

 


클래스 (Class)

  - 객체를 정의하는 설계도

  - 객체의 속성을 정의하고, 기능을 구현하여 만들어 둔 코드 상태

  - 추상적이고 포괄적인 개념  ex) 동물 

  - 클래스 명명 규칙 : 대문자로 시작할 것

  - public 클래스는 java 파일에 단 하나만 존재하며, public 클래스명과 java 파일명이 동일함

 

객체 (Object, Instance)

  - 'new' 키워드를 통해 실제 메모리에 로드된 것 (클래스를 메모리에 생성한 상태) ★

  - 클래스를 기반으로 생성된 인스턴스

      → 각 객체마다 다른 멤버 변수 값을 가지게 됨

  - 구체적인 대상  ex) 사자, 호랑이, 기린

  - . 연산자

      : 객체의 멤버변수, 메서드에 접근할 때 사용하는 연산자  ex) 객체명.변수명

 

  [더 정확한 개념]

      · Object : 실체화가 가능한 것

      · Instance : heap 메모리에 올라가, 실체화가 된 것

 

객체 지향 패러다임

  - 객체에 직관적이고 합당한 이름을 붙여야 함

  - 객체의 취지에 맞는 상태(변수)와 기능(메서드)를 정의함

  - 객체의 상태(변수) 값을 변경시킬 때는 동작(메서드)를 이용해야 함  → set 메서드의 의의

  - 객체와 객체 간의 관계를 설정함

  - 객체들 간에 서로 협력하고 상호 작용할 수 있게 설계함 ★  ex) '학생'은 '버스'를 탄다

    (서로 메시지를 주고받음)

 

 

반응형
728x90

멤버 변수 선언

public class 클래스명 {

    // 상태 (변수)
    자료형 멤버변수1;
    자료형 멤버변수2;
    ...
    
}

 

  - 변수 선언에 연산식을 바로 사용할 수 없음 → 메서드 or 생성자 안에서 연산 가능

 

객체 생성

public static void main(String[] args) {

	// 객체 생성
	클래스명 참조변수 = new 클래스명();

	// 객체의 멤버 변수 값 초기화
	참조변수.멤버변수1 = 값;
	참조변수.멤버변수2 = 값;
	...
    
}

 

  - new 키워드를 사용한 시점부터 메모리 공간에 존재하는 객체가 됨

      → 그 이전에는 아직 메모리에 존재하지 않으며, 객체가 아님

  - 주의 사항 : 객체 생성 및 이후 코드는 반드시 main 함수 내에 입력할 것

#  멤버 변수의 값을 사용자에게 입력 받기

public static void main(String[] args) {

	// 객체 생성
	클래스명 참조변수 = new 클래스명();
    
	// Scanner 객체 생성
	Scanner sc = new Scanner(System.in);
    
	// 문자열 입력 받기
	참조변수.멤버변수1 = sc.nextLine();
    
	// 정수 입력 받기
	참조변수.멤버변수2 = sc.nextInt();
	sc.nextLine();  // 개행문자 제거 용도
    
}

 

#  Scanner 객체에 대한 설명 : https://young0105.tistory.com/12

 

 


혼동하기 쉬운 변수들

  ① 지역 변수

      - 함수/메서드 내에서 선언하여, 그 함수/메서드 내에서만 사용하는 변수

      - 해당 함수 밖에서는 사용할 수 없음

      - 스택 메모리에 저장됨

 

  ② 멤버 변수

      - 클래스 내에서 객체의 속성/상태/특성을 정의할 때 사용되는 변수

      - 객체로 생성되면 해당 객체와 멤버 변수 값들은 힙 메모리에 저장됨

      - 변수가 선언되면 기본값으로 자동 초기화됨  (↔ 지역 변수)

 

  ③ 참조 변수

      - 메모리에 생성된 객체를 가리키는 변수

      - 메모리 상에 생성된 객체에 접근할 수 있는 메모리 주소 값(참조 값)을 가짐

      - 스택 메모리에 저장됨

 

#  스택 메모리와 힙 메모리에 대한 설명 : https://young0105.tistory.com/27

 

 


기타 메모

- 지역 변수와 멤버 변수의 이름이 동일해도 됨
- 하나의 java 파일 안에 여러 개의 클래스를 작성할 수 있음
    · 단, public을 가진 클래스는 단 하나만 선언할 수 있음
        → *주의 : public을 가진 클래스의 이름과 java 파일의 이름이 다르면 오류 발생
- UML 다이어그램 (클래스 다이어그램)
    : 클래스 간 관계를 도식화한 다이어그램
320x100
반응형

'Java' 카테고리의 다른 글

[Java] 스택 메모리와 힙 메모리  (0) 2023.02.06
[Java] 함수  (0) 2023.02.04
[Java] 참조 자료형 (Scanner, Random)  (0) 2023.02.03
[Java] 제어문 : 조건문과 반복문 (if, switch, for, while)  (0) 2023.02.02
[Java] 연산자  (0) 2023.02.02

댓글