본문 바로가기

Programming/Kotlin19

코틀린 접근 제한자 접근 제한자// publicclass Person { public var name: String = "John" // 모든 곳에서 접근 가능}// privateclass Person { private var age: Int = 30 // 클래스 내부에서만 접근 가능 private fun getAge(): Int { return age }}// protectedopen class Animal { protected fun makeSound() { println("Some sound") }}class Dog : Animal() { fun bark() { makeSound() // 상속받은 protected 메서드 접근 가능 }}/.. 2024. 8. 3.
코틀린 Nested 와 inner 클래스 Nested 클래스class Outer { private val outerField: Int = 5 class Nested { fun nestedMethod() = "Hello from Nested class" }}fun main() { val nested = Outer.Nested() // 외부 클래스의 인스턴스 없이 중첩 클래스의 인스턴스 생성 println(nested.nestedMethod())}중첩 클래스는 외부 클래스의 인스턴스와 독립적으로 존재합니다. 즉, 중첩 클래스는 외부 클래스의 인스턴스에 접근할 수 없습니다. 코틀린에서 중첩 클래스는 기본적으로 정적 클래스처럼 동작합니다.Nested 클래스는 Outer 클래스에 중첩되어 있지만, Outer 클래스.. 2024. 7. 31.
코틀린에서의 인터페이스 인터페이스interface Vehicle { fun startEngine() // 추상 메소드 fun stopEngine() { // 기본 구현 println("Engine stopped.") }}class Car : Vehicle { override fun startEngine() { println("Car engine started.") }}fun main() { val myCar = Car() myCar.startEngine() // "Car engine started." myCar.stopEngine() // "Engine stopped."}코틀린의 인터페이스는 추상 메소드뿐만 아니라 기본 구현도 포함할 수 있습니다. 기본 구현.. 2024. 7. 31.
코틀린에서의 속성 속성(properties)속성 선언class Person() { val name : String var age : Int}코틀린에서 속성은 var 또는 val 키워드로 정의됩니다.var : 읽고 쓰기가 가능한 속성val : 한 번 선언하면 변경이 불가능한 읽기 전용 속성 게터와 세터class Rectangle { var height: Int = 0 var width: Int = 0 val area: Int get() = height * width // 게터 var perimeter: Int get() = 2 * (height + width) // 게터 set(value) { height = value / 4 .. 2024. 7. 31.
코틀린에서의 상속 상속자바에서 있던 상속처럼 kotlin 또한 클래스를 상속시킬 수 있습니다.슈퍼 클래스(부모 클래스) : 다른 클래스에게 상속 시켜주는 클래스입니다. 상위 클래스라고도 불립니다.서브 클래스(자식 클래스) : 슈퍼 클래스에게 상속을 받는 클래스입니다. 하위 클래스라고도 불립니다.open class Car() { val x : String = "Volvo"}class Volvo : Car() { fun speed() { println(x) }}fun main() { val c1 = Volvo() c1.speed()}기본적으로 코틀린에서 클래스는 final로 선언되어 있어 상속할 수 없습니다. 따라서 상속하고자 하는 슈퍼 클래스를 다른 클래스가 상속할 수 있도록 open이라는 키워드를 사용해 상.. 2024. 7. 29.
코틀린에서의 멤버함수(클래스 함수) 멤버함수자바에서 클래스에는 함수를 생성해서 main에서 생성한 객체를 통해서 클래스 함수를 호출할 수 있습니다.코틀린의 멤버 함수는 클래스나 객체 내부에 정의되며, 해당 클래스나 객체의 속성에 접근할 수 있습니다.class Car(var brand: String, var price: Int) { fun start() { println("출발!") }}fun main() { val c1 = Car("Volvo", 1969) c1.start()} c1이 start() 함수를 호출했기 때문에 Car 클래스에 있는 start 함수가 실행되어 "출발!"이 출력됩니다.class Car(var brand: String, var price: Int) { fun start() { pri.. 2024. 7. 29.
코틀린에서의 생성자 생성자코틀린에서 생성자는 클래스를 초기화할 때 호출되는 특수한 함수입니다. 생성자는 주 생성자(primary constructor)와 부 생성자(secondary constructor)로 나뉩니다. 주 생성자는 클래스 헤더 부분에 정의되며, 부 생성자는 클래스 본문 내에 정의됩니다.  주 생성자(primary constructor) // 첫 번째 방식class Person(name: String, age: Int) { val name : String var age : Int init { this.name = name this.age = age}// 두 번째 방식class Person(name: String, age: Int) { val name = name .. 2024. 7. 29.
코틀린에서의 객체 지향 프로그램을 객체 지향으로 만들게 되면 프로그램의 구조가 명확하여 적은 코드량과 복잡하지 않기 때문에 빠른 개발이 가능해집니다.그리고 필요한 부분을 반복하기 때문에 유지보수 수정 및 디버깅이 쉬워집니다. 객체 지향 프로그래밍을 하기 위해서는 프로그램을 자동차 부품 처럼 하나 하나 분리할 필요가 있습니다. 서로 다른 기능들을 따로 제작한 후에 하나로 합치는 방식입니다.기능들을 따로 분리하는 방법은 자바와 마찬가지로 class를 생성하는 방법입니다.class 생성하기class Car { var brand = "" var price = 0} 속성과 함께 클래스를 제작하면 됩니다.속성은 클래스 내에 속하는 변수입니다. 인스턴스 할당하기Car라는 클래스를 사용해서 객체를 생성할 수 있습니다.클래스에 대한 객체는.. 2024. 7. 29.
코틀린에서의 함수 함수함수는 호출될 때만 실행되는 코드블록입니다.함수는 특정 작업을 수행하는데 사용되고 메소드라고도 불립니다.매개변수를 함수에 전달 받을 수 도 있습니다. 함수 생성fun function() { println("Function")} fun 이라는 키워드를 사용하고 함수의 이름을 쓴 뒤 () 를 붙이면 됩니다. 함수 호출fun myFunc() : Unit { println("Function")}fun main() { myFunc() myFunc() myFunc()} 함수를 실행하기 위해서는 main에 함수를 호출해야됩니다.함수는 몇 번이고 호출할 수 있습니다.Myclass().myFunc()클래스에 존재하는 멤버함수를 호출할 때는 클래스.멤버함수로 불러올 수 있습니다. 클래스 인스.. 2024. 7. 28.