- [kotlin] 코틀린 기초 문법 다지기 - 2. class2022년 06월 12일 18시 03분 00초에 업로드 된 글입니다.작성자: 핀수728x90반응형
해당 강의를 들으며 작성된 것입니다.
[무료] 코틀린 3강으로 끝내기 feat. 안드로이드 개발 - 인프런 | 강의
3강으로 짧게 끝내는 코틀린 문법! 코틀린 기초 문법과 안드로이드 기초 프로그래밍은 물론, 직접 안드로이드 앱도 만들어보세요!, - 강의 소개 | 인프런...
www.inflearn.com
Class
👉🏻 코틀린은 자바와 달리 클래스 이름과 파일의 이름이 달라도 된다.
👉🏻 한 파일 안에 여러 클래스를 생성할 수 있다.
기본 형태
👉🏻 코틀린은 new 키워드가 없다.
class Human { val name = "spin" fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human() human.eatingCake() println("My name is ${human.name}.) }
생성자 이용하기
생성자에서 프로퍼티를 넘겨주려고 하는 경우 자바는 아래와 같이 사용한다.
// 프로퍼티가 있는 경우 public Human(name, int age){ this.name = name; this.age = age; }
코틀린의 경우는 아래와 같다.
constructor 키워드를 사용한다.
class Human constructor(name: String) { val name = name fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human("spin") // 이름을 넣어주지 않으면 에러가 생긴다. human.eatingCake() println("My name is ${human.name}.) }
프로퍼티의 name 과 생성자의 name 이 같으므로
생성자 constructor 에 한번만 써도 무방하다.
그리고 constructor 또한 생략해도 된다.
class Human (val name: String) { fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human("spin") // 이름을 넣어주지 않으면 에러가 생긴다. human.eatingCake() println("My name is ${human.name}.) }
프로퍼티의 디폴트 값도 줄 수 있다.
class Human (val name: String = "홍길동") { fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human("spin") var human2 = Human() // 오류가 생기지 않는다. human.eatingCake() println("My name is ${human1.name}.) // My name is 홍길동. }
init
객체가 생성될 때 수행해야할 것들을 정의하고 싶다면
자바의 경우 생성자에서 선언을 했지만
코틀린에서는 init 블럭을 사용한다.
init 은 주생성자의 일부이다.
class Human (val name: String = "홍길동") { // 생성될 때 하고 싶은 작업 정의 (주생성자) init { println("New Human has been born") } fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human("spin") var human2 = Human() // 오류가 생기지 않는다. human.eatingCake() println("My name is ${human1.name}.) // My name is 홍길동. }
오버로딩
다른 프로퍼티도 받을 경우 (오버로딩) 부생성자를 만들어준다.
부생성자를 만들 때는 주생성자의 위임을 받아야한다.
: this(name) 이 그것과 같다.
class Human (val name: String = "홍길동") { // 생성될 때 하고 싶은 작업 정의 (주생성자) init { println("New Human has been born") } constructor(name: String, age: Int) : this(name){ println("my name is $name and $age years old") } fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human("spin") var human2 = Human() // 오류가 생기지 않는다. human.eatingCake() println("My name is ${human1.name}.) // My name is 홍길동. }
상속
👉🏻 코틀린의 클래스는 기본적으로 final
👉🏻 같은 파일 내에 있어도 접근을 할 수가 없다.
👉🏻 open 이라는 예약어를 통해서 접근해야한다.
open class Human(){ ... } class Korean : Human(){ override fun singASong(){ super.singASong() println("my name is $name lululu") } }
override
오버라이딩 또한 open 예약어를 통해 접근한다.
부모의 메서드도 사용할 경우 super 예약어를 통하면 된다. (자바와 같음)
open class Human(){ open fun singASong(){ println("lalala") } } class Korean : Human(){ override fun singASong(){ super.singASong() println("랄랄라") } }
프로퍼티 또한 부모의 것을 사용하고 싶다면
override 예약어를 사용해준다.
마찬가지로 해당 프로퍼티도 open 으로 선언된 것 이어야 한다.
class Korean(override val name : String) : Human(){ override fun singASong(){ super.singASong() println("my name is $name lululu") } }
728x90반응형'Android > Android' 카테고리의 다른 글
Android Jetpack Compose 맛보기 (0) 2022.07.03 안드로이드 애플리케이션 설계 패턴 (0) 2022.06.18 [kotlin] 코틀린 기초 문법 다지기 - 1 (2) 2022.06.06 [Android] SharedPreferences 와 KeyStore (0) 2022.05.11 [Android] Google Play Developer API으로 앱 출시하기 (2) 2022.05.10 다음글이 없습니다.이전글이 없습니다.댓글