| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- HTML
- 앱사용자행동추적
- 백엔드
- 환경변수사용
- CSS
- Git협업
- 앱개발기능추가
- kotlin
- 코틀린
- 위키피디아검색창
- Python3
- git방식
- 깃 충돌 해결방법
- 프론트엔드
- 파이썬코테함수정리
- 파이썬 코테 함수
- 깃 충돌시
- 코테준비
- env사용
- dev
- 앱개발
- It
- JavaScript
- 깃협업
- 개발자
- 앱에 팝업띄우기
- 깃 꼬였을 때
- 파이썬 코테준비
- frontend
- 앱사용자추적
Archives
- Today
- Total
zooooss
[Kotlin] 코틀린 기초 지식(2) 본문
오늘은 코틀린의 객체 지향 프로그래밍에 대하여 공부해보는 시간을 갖겠습니다!

클래스, 객체, 인터페이스 사용법, scope,데이터 클래스 등에 대해 정리해볼거예요!
OOP : 객체 지향 프로그램 언어
대표적인 OOP 언어로는 자바, C#, 코틀린이 있고, 그 외에도 많습니다!
OOP의 5가지 기본 개념은
- 변수와 타입
- 흐름 제어
- 함수
- 컬렉션
- 상속을 포함한 클래스와 객체
가 있습니다!
먼저 클래스와 객체에 대해 알아보겠습니다!
Class & Objects
class Person constructor(firstName: String, lastName: String){
// 보조 생성자 constructor는 객체 생성 시 값을 추가하게 해준다. 필수적인 요소는 아니다!
init{ // 객체가 자동으로 생성! 객체를 시작하기 위해 사용한다!
println("Person created")
println("firstName = $firstName and lastName = $lastName")
//이러면 Kwon Jiwoo가 출력됨!
}
}
fun main(){
var mary : Person("Kwon", "Jiwoo")
}
클래스의 멤버(Member Variables - Properties)
class Person(firstName: String, lastName: String){
var age : Int? = null // 나이에 상관없이 프로그램이 실행되도록
var hobby : String = "watch Netflix'
// Member functions - Methods
fun stateHobby(){
println("My hobby is $hobby")
}
fun main(){
mary.stateHobby()
}
결과는 My hobby is watch Netflix가 출력됩니다.
OPP가 중요한 이유를 깨달을 수 있었습니다!
사용할 수 있는 클래스, 데이터 타입 또는 객체를 위한 청사진을 이제 만들 수 있습니다!
//Member secondary Constructor
constructor(firstName: String, lastName: String, age: Int)
:this(firstName,lastName){
this.age = age
println("Initialized a new Person object with " +
"firstName = $firstName and lastName = $lastName and age $age")
}
lateinit이란 ?
나중에 초기화 예정을 의미합니다.
fun main(){
var myCar = Car()
println("brand is : ${myCar.myBrand}")
myCar.maxSpeed = -5
println("Maxspeed is ${myCar.maxSpeed}")
}
class Car(){
lateinit var owner : String // 여기서 초기화하지 않고, 나중에 init 함수에서 초기화를 하겠다.
val myBrand: String = "BMW"
get(){
return field.toLowerCase()
}
var maxSpeed: Int = 250
set(value){
field = if(value>0) value else throw IllegalArgumentException("최대속도는 0이하일 수 없습니다")
}
init{
this.owner = "Mary"
}
}
변경 가능한 프로퍼티를 정의하고, 값을 설정할 때 호출되는 setter를 커스텀으로 정의합니다.
여기서는 입력된 값이 0보다 큰 경우에만 값을 설정하고, 그렇지 않으면 예외를 던집니다.
var myModel : String = "M5"
private set // 하나의 클래스 내에서만 사용할 수 있다는 것
main문 안에서
println("Model is ${myCar.myModel}")로 호출합니다.
여기까지 세터, 게터, lateinit에 대해 알아보았습니다!
이제 더 나아가 데이터 클래스에 대해 알아보겠습니다!
data class User(val id: Long, var name: String)
fun main(){
var user1 = User(id:1, name:"Mary")
val name = user1.name
println(name)
user1.name = "Mary"
val user2 = User(id:1, name:"Michael")
println(user1.equals(user2))
// 또한, 다른 클래스처럼 데이터 클래스에서도 toString 메서드를 사용할 수 있습니다.
println("User Details: $user1")
// 또한, copy 함수 : 객체를 다른 곳에 쉽게 복사할 수 있습니다.
val updatedUser = user1.copy(name="Jennie")
//이렇게되면, user1은 그대로이지만 updatedUser은 copy되어 Jennie가 출력될 수 있습니다.
}
데이터 클래스란 ?
데이터를 보관하고 해당 데이터를 다루기 위한 메서드들을 자동으로 생성해주는 특별한 종류의 클래스로,
간결한 코드로 데이터를 다룰 수 있습니다.
- 객체의 비교
- 객체의 출력
- 객체의 복사
등의 작업을 간단하게 처리할 수 있습니다!
여기까지 코틀린의 객체 지향 개념에 대해 공부해보았습니다 ㅎㅎ
궁금한 점이나 수정할 점은 언제든지 받아들일 준비가 되어있습니다 :>

'STUDY > App' 카테고리의 다른 글
| [Reactive Native] 캐시(Cache) 설계 - 크롤링 주기 설정(속도 최적화) (0) | 2025.12.03 |
|---|---|
| [React Native] 북마크 기능 개발(AsyncStorage) (4) | 2025.11.13 |
| [React Native] 안드로이드 앱과 구글 시트 연동(vscode로 개발) (0) | 2025.11.03 |
| [React Native] apk 개발 환경 구축하기(vscode에서) (0) | 2025.11.03 |
| [Kotlin] 코틀린 기초 지식(1) (0) | 2023.08.05 |