class란 조금 더 연관있는 데이터를 묶어놓는 컨테이너 같은 역할을 합니다
위 사진에서 Person이라는 class는 name과 age라는 property가 들어있고
말을 하는 기능 speack() 라는 function이 들어있습니다
이렇게 클래스 안에는 name과 age같은 속성, 즉 Fields가 들어있고
그리고 행동이라고 볼 수 있는 method가 들어있습니다
그래서 클래스는 조금 더 연관있는 데이터들을 묶어놓은,
Fields와 method가 종합적으로 묶여있는 것을 말합니다
간혹 클래스안에는 method는 들어있지 않고 data만, 즉 Fields만 들어있는 경우도 있습니다
그렇게도 굉장히 많이 쓰고, 그런 것들을 data Class 라고 부릅니다
클래스 안에서도 내부적으로 보여지는 변수와, 밖에서 보여질 수 있는 변수들을 나눌 수 있는데
이런것들을 encapsulation(캡슐화) 라고 합니다
그리고 클래스를 이용해서 상속(Inheritance)과, 다형성(Polymorphism)이 일어날 수 있는데
이런 모든것들이 가능한 것이 바로 객체지향 언어 입니다
우리가 실제로 살아가고 있는 세상에는 수많은 물체와 사물이 존재하는데
이렇게 프로그래밍을 할때도 사물과 물체들을 class로, object로 정의해서 프로그래밍 하는 것이
조금 더 자연스럽기 때문에, 개발자들이 조금 더 편하고 유연하게 프로그래밍을 할 수 있습니다
객체 지향 언어로 프로그래밍을 잘 하는 개발자는 풀어야 하는 문제나 구현해야 하는 문제를
객체로 잘 정의해서 만들 수 있는 개발자를 말합니다
클래스는 붕어빵을 만들 수 있는 틀을 말합니다
청사진이라고도 불리고 template(템플릿) 이라고도 불립니다
클래스 자체에는 data가 들어있지 않고 template만 정의해 놓습니다
이 클래스에는 이런 data만 들어올 수 있어 라고 정의만 해놓고 한번만 선언 합니다
이 클래스를 이용해서 실제로 data를 넣어서 만드는 것이 Object 입니다
클래스를 이용해서 새로운 instance를 생성하면 Object가 됩니다
Object는 클래스를 이용해서 굉장히 많이 만들 수 있고 클래스는 정의만 해놓은 것이라서
실제로 메모리에 올라가지 않지만 실제로 data를 넣으면 Object는 메모리에 올라가게 됩니다
그래서 붕어빵이라는 클래스를 이용해서 팥을 넣으면 팥 붕어빵이 되고,
슈크림을 넣으면 슈크림 붕어빵이 됩니다
이렇게 만들어진 붕어빵 자체는 Object이고
붕어빵을 만들기 위해 정의한 붕어빵 틀은 Class 입니다