[앱 스쿨 2기 : Android] 3주차 2023.05.12 (Kotlin)

hxeyexn·2023년 5월 14일
0
post-thumbnail

📅 2023.05.12

📂Kotlin09_OOP ~ 📂Kotlin13_CarFactory

OOP

프로그램에서 사용되는 여러 데이터나 기능을 객체로 묶어 관리하는 프로그래밍 기법

객체

  • 매개체 하나에 대한 정보와 기능을 담고 있는 프로그램 요소
  • 관리하고자 하는 매개체의 수 만큼 객체를 생성해야 함
  • 객체는 독립적으로 관리되며 서로에 대해 관여하지 않음

클래스

  • Kotlin에서 객체는 자바와 동일하게 클래스를 설계하고 이를 통해 생성
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


Constructor

클래스를 통해 객체를 생성할 때 자동으로 동작하는 부분

  • 메서드와 비슷해 보이지만 반환 타입이 없어 메서드라고 부르지 않음
  • 클래스가 가지고 있는 변수의 값을 초기화하는데 주로 이용

init 코드 블록

  • 클래스를 통해 객체가 생성되면 자동으로 동작하는 코드 작성 가능
  • 매개변수를 정의할 수 없기에 생성자 아님
  • Java 파일로 변환될 때 모든 생성자의 가장 위에 코드가 삽입, 따라서 init 블럭의 코드가 먼저 수행
class TestClass1 {
	init {
    	println("객체가 생성되면 자동으로 동작하는 부분")
    }
}

생성자

  • constructor를 이용하여 정의할 수 있음
  • constructor 생략 가능
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


profile
Android Developer

0개의 댓글