1. 특징

    1. 한 클래스에 관한 속성을 묶어서 표현할 수 있다(속성 + 동작)을 하나로 묶을 수 있다
    2. 캡슐화
      1. 관련 있는 속성과 기능을 하나로 묶어서 표현 가능함
    3. 추상화
      1. 현실 세계의 개념이나 사물을 코드로 모델링 가능
    4. 재사용성
      1. 클래스를 기반으로 여러 객체를 생성가능함
    5. 상속 / 다형성
      1. 기존 클래스를 확장하거나, 같은 인터페이스로 다른 동작을 구현 가능함
    6. 클래스는 관례상 대문자로 시작하고 낙타 표기법을 사용한다.
  2. 장점

    1. 코드의 구조가 명확해지고 유지보수 쉬움
    2. 중복 줄이고 재사용 가능
    3. 데이터와 동작을 한 덩어리로 다뤄서 직관적임
  3. 단점

    1. 작은 프로젝트에서는 클래스 구조가 오히려 복잡해질 수 있음
    2. 객체지향 개념을 잘못 적용하면 코드가 불필요하게 무거워짐
  4. 재사용성

    1. 한 클래스를 만들면 그걸 여러가지 객체로 찍어낼수 있다.
    class Car {
    	String brand;
    	int speed;
    	void drive(){
    		System.out.println(brand + " is driving at " + speed + "km/h")
    	}
    }
    

이 Car클래스를 바탕으로 여러 객체를 만들 수 있다.

Car car1 = new Car();
car1.brand = "Hyundai";
car1.speed =100;

Car car2 = new Car();
car2.brand = "Toyota";
car2.speed = 80;

car1.drive(); //Hyundai is driving at 100km/h
car2.drive(); //Toyota is driving at 80km/h
  1. 가장 큰 포인트는

    1. Car 클래스는 여기서 설계도 역할만 함
    2. car1,cae2 같은 건 실제 객체(인스턴스)
  2. 맴버변수

    1. 이 변수들은 특정 클래스에 소속된 맴버이기 때문에 이렇게 부른다.
    2. 특징
      1. 클래스 안에서 선언되고 객체마다 별도로 값을 가짐
      2. 보통 private 으로 선언해서 직접 접근 못 하게 막고, getter/setter 같은 메서드로 다룸
      3. 인스턴스 생성시 같이 만들어짐
      4. 첫글자는 소문자로 시작함
  3. 인스턴스(객체)

    1. 설계도로 찍어낸 물건
    2. 예시
      1. new Car() 해서 만든 car1, car2
  4. 맴버변수

    1. 클래스 안에 정의된 속성
    2. 인스턴스가 생길 때마다 그 인스턴스가 자기 멤버 변수를 가짐
  5. 변수 , 클래스, 변수, 맴버변수의 차이

    1. 클래스 = 설계도
    2. 객체 = 실제 자동차
    3. 변수 = 자동자를 가리키는 리모컨
    4. 맴버 변수 = 자동차의 핸들이나 바퀴 같은 부품
    5. 변수랑 필드(데이터 항목을 가르키는 전통적인 용어)는 자바에서는 같은 뜻이다.