728x90
객체지향 프로그래밍
- 코드를 정리하는 방법
- 데이터에 대한 생각
- 구조 방식
- 프로그램에는 객체(object)가 필요함
- 각 객체는 같은 속성을 갖지만 각각 다른 데이터를 가짐
- 새로운 속성을 추가하거나, 오타를 발견한다거나, 변경을 하기 위해 데이터만 넣으면 적용해주는 함수인 Class를 사용함
- 메서드는 클래스 내에 있는 함수임
- constructor, init 메서드는 나의 클래스가 어떤 속성을 갖게될 것인지 구성할지 정할 수 있고 함수처럼 인수를 받을 수 있음
- this, self : 클래스 내의 속성 및 메서드를 지칭하는 방법
- 기본 메서드 이외에도 사용자 정의 메서드를 생성할 수 있음
- 상속은 자녀 클래스가 부모 클래스의 속성을 가지는 것임. 코드 중복을 줄이고, 코드를 재사용 가능한 조각으로 나눌 수 있음.
- 아기, 청소년, 어른은 인간이라는 공통적인 속성을 가지고 있으므로 인간 클래스를 상속받으며 아기, 청소년 특성에 맞춰 확장이 가능함. 아기에서 constructor 메서드를 호출하려면 super 메소드를 호출해야 함
추가적인 OOP 지식
https://jyj98020.tistory.com/299
https://jyj98020.tistory.com/301
static methods
[4가지 핵심 개념]
1. Encapsulation(캡슐화)
- 데이터, 데이터를 활용하는 함수를 캡슐(Class) 또는 컨테이너 안에 두는 것
- 표시할 클래스의 속성과 숨길 속성을 선택할 수 있음
- 어떻게 클래스 정보에 접근 또는 수정하는지를 결정하는 권한을 제공함
2. Inheritance (상속)
- 코드를 더 작은 단위(Class 등)로 나누고 재사용할 수 있음
- A,B의 공통되는 속성을 C 클래스로 이동시킨 후 C의 속성을 A,B가 상속하는 것
- 자식(A,B) 클래스는 C(부모)클래스의 모든 속성과 메소드를 상속받을 수 있음
- 분할, 정복이 가능함.
3. Abstraction (추상화)
- 구현 세부 정보를 숨기는 일반 인터페이스를 지정하는 행위_C++의 아버지
- 예를 들어, 우리는 기어 작동법, 브레이크, 엑셀만 알면 자동차를 운전할 수 있다. 하지만, 기어가 어떻게 만들어졌는지는 모른다. 구현 세부 내용은 숨기고 그것을 모은 인터페이스를 사용하는 것이 추상화임
- 어떤 메소드의 내용을 변경해야 될 때 인터페이스만 변경하면 그 인터페이스를 사용하는 누구도 내용을 변경할 필요가 없음
4. Polymorphism (다형성)
- 메소드 오버라이딩 : 자식 클래스만의 부모클래스 메소드를 재정의 하는 것. 단, 부모와 자식의 반환 타입은 같아야 함 (ex, String) 다른 규칙도 있음..
'두두의 IT' 카테고리의 다른 글
[Kotlin] data Class (0) | 2022.04.12 |
---|---|
[Kotlin] Modifiers (0) | 2022.04.12 |
[Kotlin] 개념, Java와의 호환, 장점, 활용 방법, 만든 이유 (0) | 2022.04.11 |
[Kotlin] in/out (0) | 2022.04.11 |
[Kotlin] operator (0) | 2022.04.11 |