Deperecated/Kotlin

코틀린 - 오브젝트

누알라리 2020. 2. 5. 17:02

/*
강의 1-19. object

주로 익명 중첩 클래스를 사용할 때 쓰이게 된다.

object는 클래스를 만드는 키워드가 아닌 클래스 없이 객체를 생성할 때 사용하는 키워드 이다.

object는 이름이 없는 클래스를 만드는 것이 아닌 클래스 없이 객체를 생성할 때 사용한다.


---익명 객체---
클래스 없이 바로 객체를 생성하는 개념
클래스가 없으므로 동일 타입의 객체를 생성하지는 못한다.


--추상 클래스, 인터페이스---
추상클래스를 상속받거나 인터페이스를 구현한 객체를 만들 때도 사용할 수 있다.

--- object 정의 ----
object 키워드로 객체를 정의하면 바로 객체가 만들어지게 되며
객체의 이름을 통해 멤버에 접근할 수 있다.

java에서의 static과 비슷한 개념이다.

--- 팩토리 메서드 ---
개념: 어떤 클래스의 객체를 생성할 때 메서드를 통해서 객체를 생성할 수 있도록 하는 개념


*/

fun main(args : Array<String>)
{
//{{ 익명 객체 생성
var a1 = object
{
var v1 = 100
var v2 = "문자열";

fun me()
{
println("익명 객체의 메서드");
}
}

a1.me();
//}} 익명 객체 생성

//{{ 추상 클래스 및 인터페이스의 익명 객체 생성
var a2 = object : TestClass(), TestInter
{
override fun test_me() {
println("익명 객체의 추상 클래스 생성");
}

override fun In_me() {
println("익명 객체의 인터페이스 생성");
}
}

a2.test_me();
a2.In_me();
//}}

//{{ object 키워드로 객체를 정의한 경우
objectClass.method1();
objectClass.method2();
//}}


//{{ 팩터리 메소드
var a3 = TestClass2.create();
println(a3);
//}}

}

abstract class TestClass
{
abstract fun test_me();
}

interface TestInter
{
fun In_me();
}

object objectClass
{
var a1 = 100
var a2 = 200

fun method1()
{
println("옵젝의 메서드1");
}

fun method2()
{
println("옵젝의 메서드2");
}

}

class TestClass2
{
companion object {
fun create() : TestClass2
{
println("팩터리 메서드 호출");
return TestClass2();
}
}
}

'Deperecated > Kotlin' 카테고리의 다른 글

코틀린 - 코틀린 컬렉션  (0) 2020.02.05
코틀린 - 배열  (0) 2020.02.05
코틀린 - 열거형  (0) 2020.02.05
코틀린 - 중첩 클래스  (0) 2020.02.05
코틀린 - 제네릭  (0) 2020.02.05