클래스란?
- 클래스는 객체를 정의한 ‘설계도(blueprint)’ or ‘틀(frame)’ 이다.
- 객체를 생성하는데 사용한다. | 객체는 클래스에 정의되고 설계된 내용 그대로 생성
⇒ 클래스는 객체 그 자체가 아니라 단지 객체를 생성하는데 사용되는 하나의 틀
- 클래스는 객체 그 자체가 될 수 없다.
- ex) 집 설계도 (클래스) ≠ 집(객체)
- 집 설계도는 집 자체가 될 수 없고, 단지 집을 만들기 위해 필요한 요건들을 정의
인스턴스란?
- 클래스를 통해 생성된 객체
- 인스턴스화 → 클래스로부터 객체를 만드는 과정
Q. 객체와 인스턴스의 차이는?
A. 차이를 두는 것에 큰 의미는 없다.
객체는 모든 인스턴스를 포괄하는 넓은 의미. (객체 > 인스턴스)
인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조.
왜? 클래스를 정의하고, 이를 통해서 객체를 생성?
- 클래스를 한번 잘 정의해 놓으면, 매번 객체를 생성할 때마다 어떻게 객체를 만들어야 할 지 고민하지 않고, 클래스로부터 객체를 생성해서 사용하기만 하면 된다.
- ex) 붕어빵 기계(클래스)를 잘 만들어 놓으면 매번 붕어빵(객체)을 어떻게 만들어야 할 지 고민하지 않는다.
클래스의 구성요소와 기본 문법
- 클래스명은 주로 대문자로 시작
- 필드(Field) - 클래스의 속성(static)을 나타내는 변수. ex)모델명, 컬러, 바퀴의 수
- 메서드(Method) - 클래스의 기능(hehavior)을 나타내는 함수. ex)시동하기, 가속하기, 정지하기
- 생성자(Constructor) - 클래스의 객체를 생성하는 역할.
- 이너 클래스(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 |