📂Kotlin09_OOP ~ 📂Kotlin13_CarFactory
프로그램에서 사용되는 여러 데이터나 기능을 객체로 묶어 관리하는 프로그래밍 기법
fun main {
// 클래스를 이용해 객체 생성
var obj1: TestClass1 = TestClass1()
// 첨조 변수 선언 시 클래스 타입 생략 가능
val obj2 = TestClass1()
// 참조 변수에는 객체의 ID 정보가 들어 있으며 다른 변수에 담을 수도 있음
var obj3 = obj2
var obj4 = TestClass2()
obj4.a1 = 100
obj4.testMethod1()
}
// 클래스 정의
// 클래스 내부에 내용이 없다면 { } 생략 가능
class TestClass1 {
}
class TestClass2 {
// 멤버 변수
var a1 = 0
// 멤버 메서드
fun testMethod1(){
println("testMethod1")
}
}
📂Kotlin09_OOP
클래스를 통해 객체를 생성할 때 자동으로 동작하는 부분
class TestClass1 {
init {
println("객체가 생성되면 자동으로 동작하는 부분")
}
}
class TestClass1 {
var a1 = 0
var a2 = 0
constructor(a1: Int, a2: Int) {
this.a1 = a1
this.a2 = a2
}
}
// 위 코드와 동일
class TestClass1 constructor(var a1: Int, var a2: Int)
// constructor 생략 가능
class TestClass1 (var a1: Int, var a2: Int)
fun main() {
var t1 = TestClass2(1, 1)
t1.testMethod()
var t2 = TestClass2()
t2.testMethod()
var t3 = TestClass2(1)
t3.testMethod()
}
class TestClass2 (var a1: Int, var a2: Int) {
var a3 = 0
constructor() : this(100, 200)
constructor(a1: Int) : this(a1, 200) {
println("매개변수가 있는 생성자 호출")
}
fun testMethod() {
println("a1 : $a1, a2 : $a2, a3 : $a3")
}
}
➡️ a1 : 1, a2 : 1, a3 : 0
a1 : 100, a2 : 200, a3 : 0
매개변수가 있는 생성자 호출
a1 : 1, a2 : 200, a3 : 0
📂Kotlin10_Constructor