Study/JAVA

[객체지향 / Java] 클래스 쉽게 이해하기

Reese 2022. 12. 29. 01:38

클래스란?

  • 클래스는 객체를 정의한 ‘설계도(blueprint)’ or ‘틀(frame)’ 이다.
  • 객체를 생성하는데 사용한다. | 객체는 클래스에 정의되고 설계된 내용 그대로 생성

클래스는 객체 그 자체가 아니라 단지 객체를 생성하는데 사용되는 하나의 틀

  • 클래스는 객체 그 자체가 될 수 없다.
  • ex) 집 설계도 (클래스) ≠ 집(객체)
    • 집 설계도는 집 자체가 될 수 없고, 단지 집을 만들기 위해 필요한 요건들을 정의

 

인스턴스란?

  • 클래스를 통해 생성된 객체
  • 인스턴스화 → 클래스로부터 객체를 만드는 과정

Q. 객체와 인스턴스의 차이는?

A. 차이를 두는 것에 큰 의미는 없다.

    객체는 모든 인스턴스를 포괄하는 넓은 의미. (객체 > 인스턴스)

    인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조.

 

왜? 클래스를 정의하고, 이를 통해서 객체를 생성?

  • 클래스를 한번 잘 정의해 놓으면, 매번 객체를 생성할 때마다 어떻게 객체를 만들어야 할 지 고민하지 않고, 클래스로부터 객체를 생성해서 사용하기만 하면 된다.
  • ex) 붕어빵 기계(클래스)를 잘 만들어 놓으면 매번 붕어빵(객체)을 어떻게 만들어야 할 지 고민하지 않는다.

 

클래스의 구성요소와 기본 문법

  • 클래스명은 주로 대문자로 시작
  1. 필드(Field) - 클래스의 속성(static)을 나타내는 변수. ex)모델명, 컬러, 바퀴의 수
  2. 메서드(Method) - 클래스의 기능(hehavior)을 나타내는 함수. ex)시동하기, 가속하기, 정지하기
  3. 생성자(Constructor) - 클래스의 객체를 생성하는 역할.
  4. 이너 클래스(Inner class) - 클래스 내부의 클래스를 의미.
  • 클래스의 멤버(member) : 필드, 메서드, 이너 클래스
  • 속성(필드)과 기능(메서드)은 해당 클래스와 관련된 데이터의 집합. 핵심적인 정보를 담고 있다.

 

클래스 예시로 보기

  • 클래스(Class)
    • 차(Car) : 설계도

 

  • 필드(Field)
    • car.modelName = "람보르기니"
    • car.modelYear = "2016"
    • car.color = "주황색"
    • car.maxSpeed = 350

 

  • 메소드(Method)
    • car.acccelerate()
    • car.brake()

 

  • 인스턴스(Instance)
    • 내 차(myCar) : 설계도에 의해 생산된 차량
    • 친구 차(friendCar) : 설계도에 의해 생산된 또 다른 차량
class Car{
    private String modelName;	//필드(차 모델)
    private int modelYear;	//필드(차 출고 년도)
    
    void accelerate(){...}; 	//메소드(시동걸기)
    void brake(){...};		//메소드(정차하기)
}

=> 자동차 인스턴스는 같은 필드와 메소드를 갖게 된다. but, 각 인스턴스마다 가지고 있는 프로퍼티의 값은 전부 다르다.

 

클래스의 기본 구조 이해해보기 (feat. 계산기)

import java.util.Scanner;

public class SimpleCalculatorTest {
    public static void main(String[] args){
	//외부 입력을 받을 수 있는 Scanner 객체 생성
        Scanner scan = new Scanner(System.in); 

        System.out.println("첫 번째 숫자: ");
        String str1 = scan.nextLine(); //첫 번째 숫자 입력

        System.out.println("연산자: ");
        String op = scan.nextLine(); //연산자 입력

        System.out.println("두 번째 숫자: ");
        String str2 = scan.nextLine(); //두 번째 숫자 입력

        int num1 = Integer.parseInt(str1);
        int num2 = Integer.parseInt(str2);
        int result;

	//.equals() -> 두 비교대상의 주소 값이 아닌 데이터값을 비교하기 때문에 정확한 비교 가능
        if (op.equals("+")){    
            result = num1 + num2;
        }
        else if(op.equals("-")){
            result = num1 - num2;
        }
        else if(op.equals("/")){
            result = num1 / num2;
        }
        else{
            result = num1 * num2;
        }
        System.out.println(str1 + " " + op+" "+str2+" = "+result);
    }
}

여기서 잠깐!!  String 에서 ==.equls() 의 차이는?

== 연산자

  •  

-추가예정-

 

 

'Study > JAVA' 카테고리의 다른 글

[자료구조] 스택(Stack) / 큐(Queue)  (0) 2023.01.16
[Java] 배열(Array)  (0) 2023.01.12
[Java] 람다식(Lambda expression)  (0) 2023.01.08
[객체지향 / Java] 객체란? 어떻게 사용할까?  (0) 2022.12.30