/*
강의 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 |