자바는 객체지향언어이다.
자바에서의 객체(Object)
★★★클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역(Heap 영역)에 생성된 것★★★
구조체 - 여러 개의 자료형, 여러 개의 데이터 (ex. 키, 몸무게같은 double값, 발 사이즈 int값, 이름 String값) (구조체의 특징)
클래스가 만들어지는 기반은 구조체부터 시작한다.
구조체 자체가 클래스는 아니다.
구조체 내의 데이터는 외부에서 볼 수 있고 수정, 삭제가 가능했다. (기능이 가능했다)
그래서 막, 캡슐 같은 걸 씌운다. 데이터 접근 제한을 둔다.
데이터를 가공하는 것은 기능.
캡슐 안에 데이터뿐만 아니라 기능까지 넣어서 데이터를 가공할 수 있게끔 한 것이 클래스이다.
클래스 = 구조체 + 기능
클래스의 등장 배경
캡슐화(외부에서 볼 수, 수정할 수, 삭제할 수 없도록 하는 것)를 통해 기능을 포함한 개념
사물이나 개념의 공통 요소를 추상화(abstraction)하여 정의
피카소, 눈, 코, 입, 대충 그린 것만 봐도 얼굴이라는 것을 알아차릴 수 있다.
추상화(abstraction)
'유연성을 확보'하기 위해 '구체적인 것은 제거'한다는 의미
프로그램에서 필요한 '공통점을 추출'하고, '불필요한 공통점을 제거'하는 과정
제일 위 Person은 클래스 이름이다.
데이터 접근제한자, -, private
-name : String
기능까지 더해지면 클래스가 된다.
클래스는 객체를 만들기 위한 도면이다.
클래스로 정의되어있는 것들은 모두 참조형 자료형
DimensionalArray da = new DimensionalArray();
Scanner sc = new Scanner(System.in);
객체 지향 3대 특징 (4대 특징엔 추상화도 들어간다)
변수
사실 클래스와 객체의 구분을 그렇게 엄격하게 하지 않는다.