Uknow's Lab.
article thumbnail
[코파기 2부] 9. 코틀린과 정적 (Object/Companion Object)

정적(static) ? 정적이란, 고정되어 있다는 의미입니다. 동적(Dynamic)과 상반된 의미를 갖고 있죠. 정적 변수란, 해당 클래스의 모든 객체가 하나의 데이터를 공유한다는 특성이 있습니다. 자바 코드를 예시로 들어보겠습니다. // 자바 코드 class Test { static int a = 0; // 정적(static)으로 생성 int b = 0; } public class Main { public static void main(String[] args) { Test test1 = new Test(); Test test2 = new Test(); test1.a = 1; test1.b = 1; test2.a = 2; test2.b = 2; System.out.println("test1 a : " ..

article thumbnail
[코틀린 2부] 8. 코틀린과 상수 Const

상수 (Constant) 상수(Constant)란 변하지 않는 수를 뜻합니다. 이는 변하눈 수인 변수(variable)과 반대되는 의미입니다. 사실 객체지향과는 큰 연관이 없어 1부에서 다루려고 했는데, 클래스, 객체, 커스텀 getter 등 1부에서 다루지 않은 내용이 많이 튀어나와 2부에서 다루기로 했습니다... 상수의 사용 const val MAX_VALUE = 1000000000 fun main() { MAX_VALUE = 45643453 // 변경 불가! } 상수는 constant의 줄임말인 const에 val을 붙여 사용할 수 있으며, 한 번 초기화하면 절대 값을 바꿀 수 없습니다. 앞의 내용을 잘 따라오신 분들이라면, 한 가지 의문이 드실 수 있습니다. 엥? 굳이 const 안써도 그냥 va..

article thumbnail
[코파기 2부] 7. 코틀린과 열거형 클래스 Enum

이번에 알아볼 것은 열거형 클래스 Enum 입니다. Enum은 Enumeration의 줄임말로써, 말 그대로 속성들을 나열한 클래스를 의미합니다. 자동차가 있습니다. 저는 이 자동차의 상태를 표현하고 싶습니다. 자동자의 상태는 대략 시동 꺼짐(off), 정지(stop), 주행중(drive), 주유중(refuel)으로 나눴습니다. String을 사용하여 상태 표현하기 class CAR { var state = "DRIVE" } fun main() { val car1 = CAR() car1.state = "STOP" val car2 = CAR() car2.state = "OFF" } 저는 이러한 속성들을 String으로 표현하는건 그리 좋아하진 않습니다. 오타도 자주 나고, 미리 정의해놓는게 그냥 문서로 정..

article thumbnail
[코파기 2부] 6. 코틀린과 늦은 초기화 : lazy, lateinit

코틀린에서 전역변수 사용 class Person { String name; } public class Main { static Person person; public static void main(String[] args) { person = new Person(); } } 자바 개발자라면 클래스 내 변수를 어느 메소드에서 자유롭게 접근하도록 하기 위해 전역변수로 선언만 해둔 후, 이를 특정 시점에 초기화 및 생성시켜 써본 경험이 한 번쯤은 있으실 겁니다. class Person val person:Person // 초기화하지 않으면 에러 발생!! fun main() { val person = Person() } 하지만 코틀린에서는 위와 같은 코드는 성립이 안됩니다. 코틀린에서는 변수의 선언과 동시에 초..

article thumbnail
[코파기 2부] 5. 코틀린과 추상 클래스와 인터페이스 (+ 둘의 차이점)

추상적인게 뭘까. 관념적. 개념적. 구체적의 반댓말로도 볼 수 있겠네요. 그럼, 추상화는 뭘까요? 관념적이고, 개념적이게 만드는 것이죠. 즉, 사물이나 현상, 개념에서 공통적인 특성을 묶는 것을 의미합니다. 추상 클래스 (Abstract Class) 추상 클래스는 하나 이상의 추상 메소드를 갖고 있는 클래스입니다. 추상 메소드는 또 뭘까요? 추상 메소드(Abstract Method)는 구현부(몸체, 중괄호 안 내용)를 가지지 않는 미완성의 메소드입니다. 추상 클래스는 하나 이상의 추상 메소드를 가진 클래스로 이루어지며, 이러한 추상 메소드는 추상 클래스를 상속받은 자식 클래스에서 구체화 됩니다. 추상 클래스를 상속받은 자식 클래스는 모든 추상 메소드를 오버라이딩하여 구체화해야 합니다. 강제성이 부여되지요..

article thumbnail
[코파기 2부] 4. 코틀린과 접근 제한자

접근 제한자 접근 제한자는 클래스 외부에서 클래스, 프로퍼티, 메소드 등에 접근 권한을 제한 / 관리할 때 쓰입니다. 코틀린에서는 public internal, protected, private 4가지 키워드가 있습니다. public(Default) : 이름처럼 아무나 접근할 수 있는 형태입니다. private : 프라이빗이라는 이름처럼, 같은 파일(클래스) 내에서만 접근 가능합니다. internal : 같은 모듈 내에서만 접근 가능합니다. protected : 같은 클래스와 자식 클래스에서만 접근 가능합니다. 접근 제한자를 명시하지 않았을 경우, public이 디폴트로 지정됩니다. 이들간의 역할은 위와 같습니다. Private Private - 클래스와 프로퍼티, 메소드의 경우 class MyClass..

article thumbnail
[코파기 2부] 3. 코틀린과 상속(Inheritance)와 오버라이딩(Override)

상속(Inheritance)이란? 상속이 뭘까요? 가장 먼저 떠오르는 것은, 부모로부터 돈 혹은 집안 가보 등 무엇인가 '물려받는 행위'가 떠오릅니다. 객체지향에서 말하는 상속은 일상 생활의 상속과 비슷하나 약간 다릅니다. 객체지향에서 상속이란, 클래스가 다른 클래스의 요소를 상속받는 것을 의미합니다. 사실 저는 이게 상속이라기 보단 확장에 가깝다고 생각합니다. 기반이 되는 클래스를 부모 클래스, 상위 클래스, 상속을 받는 클래스를 자식 클래스, 하위 클래스, 서브 클래스라 보통 이야기합니다. 부모 클래스를 A, 자식 클래스를 B라 할 때, B는 A다 라는 관계가 성립해야 합니다. 아빠가 할아버지로부터 유산을 물려받았습니다. 그럼 할아버지는 아빠일까요? 조금 어색한 느낌이 듭니다. 하지만 확장으로 생각한..

article thumbnail
[코파기 2부] 2. 코틀린과 프로퍼티와 setter/getter. 여기에 data class를 곁들인.

POJO (Plain Old Java Object) class Person { String name; int age; int height; double weight; public Person(String name, int age, int height, double weight) { this.name = name; this.age = age; this.height = height; this.weight = weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) ..

article thumbnail
[코파기 2부] 1. 코틀린과 클래스, 객체, 생성자

코파기(코틀린 파헤치기) 시리즈 1부는 재밌게 읽고 오셨을까요? 객체지향편 시작합니다. 객체지향 프로그래밍(OOP, Object Oriented Programming)객체지향 프로그래밍이란, 프로그램을 단순히 데이터를 처리하는 것으로 보는 것을 넘어, 각 객체(Object) 단위로 나누고, 이들간의 서로 상호작용하는 프로그래밍 패러다임 입니다. 음... 객체지향을 어떻게 소개해야 하나 고민이 좀 많았습니다. 객체지향에 관한 내용을 설명하는 것 만으로도 책 몇 권은 뚝딱 나올텐데... 다 적을 수 있을까? 자바의 객체지향에 관한 책을 읽었을 때, 저자는 진정한 객체지향이 뭔지, 객체지향 프로그래밍을 시작한지 8년이 지나서야 좀 알 것 같다고 적혀있었습니다. 흠... 함부로 적었다간 고수분들께 호되게 혼날 ..