본문 바로가기

코틀린

코틀린 공부 이야기 - 3주차

객체지향 (Object-Oriented Programming)

객체지향의 장점: 모듈화, 디버깅, 확장성, 코드 재사용성

객체지향의 단점: 느린 속도, 설계에 많은 시간 소요

객체지향의 특성

  1. 캡슐화 (Encapsulation): 객체를 캡슐로 → 내부를 보호하고 볼 수 없게 함
  2. 상속 (Inheritance): 슈퍼클래스에 만들어진 필드와 메소드를 물려 받음 → 코드 중복 작성 방지
  3. 다형성 (Polymorphism): 같은 이름의 메소드가 다르게 구현 (오버라이딩, 오버로딩 등)

객체

객체 (Object): 속성 (Attribute)과 메서드 (Method)로 구성됨

속성 (Attribute): 객체의 상태나 특성을 정의 (데이터)

메서드 (Method): 객체의 동작을 정의

 

클래스 (Class): 객체를 생성하기 위한 틀

인스턴스 (Instance): 클래스를 기반으로 만든 객체

생성자 (Constructor): 클래스로부터 객체를 생성할 때 초기화 해 주는 메서드

주 생성자: 새로운 객체를 만들 때 반드시 필요로 하는 파라미터

부 생성자: 새로운 객체를 만들 때 optional한 파라미터

 

init: 인스턴스 생성 시 제일 먼저 호출되는 함수

constructor: 해당하는 부 생성자로 인스턴스를 생성한 경우 호출되는 함수

 

상속 (Inheritance): 객체가 다른 개체를 상속받아 상속받은 객체의 요소를 사용

(상속을 하려면 open 키워드를 붙여야 함)

class<className>(parameter): <superClassName>(superClassParameter)

추상 클래스 (Abstract Class), 추상 함수 (Abstract Fun)

추상 클래스: 완전한 구현 x, 인스턴스화 x, 자식 클래스에서 완성시켜야 함

추상 함수: 구현부가 존재 x, 자식 클래스에서 함수를 override해서 구현해야 함

  • open 키워드 없이 상속, override 가능함

인터페이스 (Interface)

  • 변수 정의 가능, 값 할당 불가능
  • 구현부가 있는 함수 정의 가능
  • 서브클래스에서 여러 개의 인터페이스 상속 가능

함수 (Function)

fun <functionName>(parameterName:dataType) : returnDataType {…}

top-level 함수: 클래수 내에 포함되어 있지 않고 최상단에 선언된 함수

클래스 멤버함수: 클래스 내부에 정의된 함수

 

가시성 변경자 (Visibility Modifier)

  1. public: 기본값, 어느 위치에서든 참조 가능
  2. private: 선언한 파일 내부에서만 참조 가능
  3. internal: 같은 module 안에서만 참조 가능
  4. protected: 선언한 Class 내부에서만 참조 가능 + subclass에서는 참조 가능

Package: 관련된 코드를 묶어서 구성

import: 다른 package를 참조

Module: 한번에 컴파일 되는 묶음, 대체로 기능 단위

프로젝트 > 모듈 > 패키지 > 파일

 

🙋🏻‍♂️ 이번 강의에서 특히 중요하다고 생각하는 것

이 강의 모든 내용이 객체지향을 이해하기 위한 것이라고 생각한다.

지금까지 개발하면서 객체지향의 장점을 살려 본 경험이 별로 없기 때문에… 객체에 대한 이해와 가시성 변경자를 잘 이해해야 할 것 같다… 그래야 객체지향의 장점을 잘 사용할 수 있지 않을까

 

+ 아직 이론만으로 배우고, 실전으로 해 본 적이 없기 때문에 모르는 게 많다. 앞으로 공부하면서 알게 된 것들은 추가로 작성할 예정이다. 

'코틀린' 카테고리의 다른 글

코틀린 공부 이야기 - 4주차  (0) 2024.03.03
코틀린 공부 이야기 - 2주차  (1) 2024.02.26