오늘 4대 특징에 대해 공부했는데



먼저 추상화


이건 사용자정의타입 클래스 자체를 말하는거같다


내가 어떤 목적성을가지고 타입을 만들어 그것의 특징들을 클래스로 표현했다면 그게 곧 추상화라는 의미인것같다


뭐 컴퓨터란 타입을 만들었으면 그안에 cpu라는 속성도 넣고 하드디스크라는 속성도 넣고 부팅이라는 행위도 넣고 등등등



캡슐화


밖에서 봣을때 굳이 안의 내용을 알필요없이 기능을 활용할수있게 잘 포장해놓은 케이스의 개념인거같다


접근제한자로 굳이 접근할필요가없는것들은 잘 숨겨놓고 노출할 필요가있는건 노출하고


프로퍼티를 활용해서 멤버변수를 목적에 맞게 잘쓸수있도록 관리한다던가 이런걸 말하는거같다



상속성


중복코드의 최소화나 재사용을 위해 생겨난 개념같다


컴퓨터란 클래스가 있으면 그 자식클래스로 뭐 데스크탑, 노트북, 맥북등등 하위 개념들에게


공통적으로 쓸수있는 기능들을 물려주고 공유하고 머 이러라는거같다



다형성


유지보수 측면에서 생겨난 개념같다


먼저 만들어논 클래스에 뭔가 기능을 추가해서 사용하고 싶다던가 변경점을 넣고싶을때


굳이 원본 클래스를 건들지 않고도 기능을 물려받아 활용할건 활용하고 재정의할건 재정의하고 뭐 이러라는거 같다


그리고 이름은 같아도 다양한 수행을 미리 구축해놓고 그 수행값에 맞는 명령이 떨어지면 스마트하게 찾아가는 서비스? (오버로드) 


뭐 이런것도 포함되는거같다




일단은 이렇게 이해했는데 뭐 아직 와닿는건 없어도 이것저것 직접 만들다보면 익숙해지지 않을까