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

2023. 2. 3. 17:48·Java/Base
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 > Base' 카테고리의 다른 글

[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
'Java/Base' 카테고리의 다른 글
  • [Java] 스택 메모리와 힙 메모리
  • [Java] 함수
  • [Java] 참조 자료형 (Scanner, Random)
  • [Java] 제어문 : 조건문과 반복문 (if, switch, for, while)
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    java
    js
    오블완
    SpringBoot
    Swing
    SEO
    http
    php
    SQL
    jQuery
    Codeigniter
    zapier
    jsp
    SWAGGER
    cs
    HTML
    errorNote
    면접
    git
    typeScript
    vuejs
    티스토리챌린지
    Android
    개발일지
    Wordpress
    tailwindcss
    C#
    CSS
    Hotkeys
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 객체와 클래스 1 : 객체 지향 패러다임과 멤버 변수
상단으로

티스토리툴바