class - java
class 클래스이름 {
클래스이름(변수) {
생성자 정의
}
}
class - kotlin
java
class 클래스이름 {
클래스이름(변수) {
}
}
kotlin
class 클래스이름 constructor(변수) {
}
class 클래스이름(변수) {
}
class - java 다중 생성자
class Sample {
private String name;
private int age;
Sample(String name) {
this.name = name;
}
Sample(String name, int age) {
this(name);
this.age = age;
}
}
class - kotlin 다중 생성자
// primary constructor - constructor 생략 가능
class Sample constructor(val name : String, val age : Int) {
// secondary constructors - 생략 불가
constructor (name : String) : this (name, 0)
}
class - Default 생성자
class Sample(val name : String, val age : Int = 0)
class - java init
class Sample {
private String name;
private int age;
Sample(String name) {
this.name = name;
Log.d("TEMP", "name "+ name + " age " + age);
}
Sample(String name, int age) {
this(name);
this.age = age;
Log.d("TEMP", "name " + name + " age " + age);
}
}
class - init
class Sample(val name : String, val age : Int = 0) {
constructor (name : String) : this(name, 0) {
println ("----------- name : $name, age : $age")
}
init { // init 이 먼저 실행됨.
println ("name : $name, age : $age")
}
}
class 생성자에서 초기화
class Customer(name : String) {
val customerName = name.toUpperCase() // 대문자로 변경
init {
print("name $name customerName $customerName")
}
}
class Customer private constructor(name : String) { // class private 설정
val customerName = name.toUpperCase() // 대문자로 변경
init {
print("name $name customerName $customerName")
}
}
class 상속 - java : abstract
public abstract class Base {
public Base(int age) {
}
}
// 추상 클래스의 상속을 다음과 같이 사용
public class UseBase extends Base {
public UseBase(int age) {
super(age);
}
}
class 상속 - kotlin: abstract
abstract class Base(age : Int)
// 추상 클래스를 다음과 같이 사용
class UseBase (age : Int) : Base(age)
class 상속 - java : interface
interface Base {
String getName();
}
// 추상 클래스를 다음과 같이 사용
class UseBase implements Base {
@Override
public String getName() {
return "name";
}
}
class 상속 - kotlin : interface
interface Base {
fun getName() : String
}
// 추상 클래스를 다음과 같이 사용
class UseBase : Base {
override fun getName() = "name"
}
fun test() {
println(Customer(1).moreThan10YearsOld())
}
abstract class AbstractBase(val age : Int)
interface InterfaceBase {
fun moreThan10YearsOld() : Boolean
}
class Customer(age : Int) : InterfaceBase, AbstractBase(age) {
override fun moreThan10YearsOld() = age > 10
}
class open
- kotlin은 abstract/interface을 제외한 모든 클래스는 final이다.
final class Sample {
}
class Temp extends Sample { // 오류 발생
}
class Base (age : Int)
// open으로 생성한 추상 클래스를 다음과 같이 사용
class UseBase(age:Int) : Base(age) // Base 클래스는 java의 final 클래스와 같아서 상속안됨!!
open class Base (age : Int)
// open으로 생성한 추상 클래스를 다음과 같이 사용
class UseBase(age:Int) : Base(age) // Base 클래스 open 선언해줘서 상속 가능!!
'# 02 > 코틀린' 카테고리의 다른 글
[Kotlin] Control Flow - if/when/loops (0) | 2019.07.11 |
---|---|
[Kotlin] Function (0) | 2019.07.11 |
[Kotlin] Properties and Fields (0) | 2019.07.11 |
[Kotlin] Types (0) | 2019.07.11 |
[Kotlin] 조건문 (0) | 2019.07.10 |