Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- If
- setState
- 람다식
- SizedBox
- Flutter
- 뷰바인딩
- 패스트캠퍼스
- 지연초기화
- 인스턴스
- 상속
- 안드로이드 스튜디오
- Kotlin
- 액티비티 생명주기
- 리스트뷰
- StatelessWidget
- expanded
- 반복문
- Widget
- StatefulWidget
- spacer
- 빌드 프로세스
- 두 수의 나눗셈
- appbar
- margin
- 프로그래머스
- 변수
- 프래그먼트
- 추상메소드
- padding
- button
Archives
- Today
- Total
Y_Ding
클래스와 생성자 본문
클래스
- 생성자, 변수, 함수, 클래스로 구성
- 코틀린에서는 클래스의 생성자를 본문이 아닌 선언부에 작성할 수 있음
- 그렇기 때문에 본문이 없는 클래스도 의미가 있음
- 클래스 안에 다른 클래스 선언 가능
- 객체를 생성해 객체로 클래스의 멤버에 접근
val user = User("Ryu")
user.someFun()
* User("Ryu") : 객체 생성 구문
* 클래스 이름과 같은 함수로 객체를 생성
생성자(주 생성자 / 보조 생성자)
- 주 생성자와 보조 생성자를 모두 선언한다면 반드시 생성자끼리 연결해주어야 함
- 보조 생성자에서 주 생성자를 호출해주어야 함
- 클래스 내에 주 생성자가 있다면 this() 구문을 이용해 주 생성자 호출
보조 생성자에서 주 생성자 호출
class User(name: String) {
constructor(name: String, age: Int): this(name){
(......)
}
}
fun main() {
val user = User("Ryu", 20)
}
보조 생성자가 여러개일 때
class User(name: String) {
constructor(name: String, age: Int): this(name){
(......)
}
constructor(name:String, age: Int, email: String): this(name, age){
(..........)
}
}
fun main() {
val user = User("Ryu", 20, "email@naver.com")
}
주 생성자
- constuctor 키워드 사용
- 한 클래스에 하나만 가능
- 클래스의 주 생성자를 선언하지 않으면 컴파일러가 매개변수 없는 주 생성자를 자동으로 추가
- 필요에 따라 매개변수 선언 가능
주 생성자의 매개변수
class User(name:String, age: Int) {
}
* 생성자의 매개변수는 기본적으로 생성자에서만 사용할 수 있는 지역변수
객체를 생성할 때 매개변수 타입과 개수에 맞는 인자 전달해야 함
val user = User("Ryu", 10)
init 키워드
- 코틀린 클래스 안에서 init키워드로 지정한 영역은 객체를 생성할 때 자동으로 실행됨
- 주 생성자의 본문을 구현하고 싶을 때 사용
생성자의 매개변수는 지역 변수이기 때문에 다른 함수에서는 사용할 수 없음! 사용하고 싶다면?
방법 1.
클래스의 멤버 변수를 선언하고 주 생성자의 본문인 init 영역에서 매개변숫값을 클래스의 멤버 변수에 대입
class User(name:String, age: Int) {
//클래스 멤버 변수 선언
var name: String
var age: Int
init {
//클래스 멤버 변수에 생성자 매개변숫값 대입
this.name = name
this.age = age
}
fun someInfo() {
println("name: $name, age: $age")
}
}
fun main() {
val user = User("Ryu", 20)
user.someInfo()
}
실행 결과 : name : Ryu, age : 20
방법2.
- 생성자의 매개변수를 클래스의 멤버 변수로 선언하는 방법 (조금 더 간단한 코드 작성)
- 주 생성자의 매개변수는 생성자 안에서만 사용할 수 있는 지역 변수지만 매개변수를 var나 val 키워드로 선언하면 클래스의 멤버 변수가 됨
- 원래 함수는 매개변수를 선언할 때 val,var 키워드 추가 불가능
- 주 생성자에서만 유일하게 var, val 키워드로 매개변수 선언 가능 , 이렇게 하면 클래스의 멤버 변수가 됨
class User(val name: String, val age: Int) {
fun someInfo() {
println("name: $name, age: $age")
}
}
fun main() {
val user = User("Ryu", 20)
user.someInfo()
}
실행 결과: name: Ryu, age: 20
보조 생성자
- 클래스의 본문에 constructor 키워드로 선언
- 클래스 본문에 선언하므로 여러 개 추가 가능
'TodayILearned > Android&Kotlin' 카테고리의 다른 글
AlldayFit 팀프로젝트 (0) | 2023.11.01 |
---|---|
미세먼지 확인 앱 만들기 (0) | 2023.09.18 |
코틀린 이해하기 (0) | 2023.09.14 |
구글 지도앱 만들기 (2) | 2023.09.14 |
사용자 위치 얻기 (0) | 2023.09.14 |