반응형
정말 기초부터 혼자 공부하면서 같이 정리해나가는 정리노트
1. class
- 클래스란?
- 객체지향 프로그래밍(OOP)에서 특정 객체들을 생성하기 위한 틀
- 틀 안에 들어가는 멤버는 생성자, 변수, 함수, 클래스 등으로 구성됨
- 클래스를 사용하는 이유 중 하나는 틀만 만들어져있고 실제사용시 메모리 영역에 올려서 씀
- 따라서 실행됨과 동시에 메모리를 모두 사용하는것과 성능 및 속도에서 차이가 난다
- 상속이라는 개념을 가지고 있으며, 여러 곳에서 해당 클래스를 가져다가 사용하기 용이
class User
{
var name ="Lee"
fun getName()
{
println("name = $name")
}
class Test {}
}
fun main()
{
// 틀만 있던(선언만) User 클래스를 user라는 이름으로 실제 메모리에 생성
var user = User()
// 생성된 user 클래스 내부에 name을 호출
println("user name = ${user.name}")
// user 클래스 내부의 함수를 호출
user.getName()
// User 클래스 내부의 Test 클래스를 test로 생성
var test = User.Test()
}
2. constructor (생성자)
- 클래스를 생성할때 위에 예제와 같이 생성자가 없는 경우는 클래스명() 으로 생성이 가능
- 생성자 constructor가 있는 경우는 생성시 생성자 규칙에 맞춰 입력해줘야 함
- 생성자에는 주 생성자와 보조 생성자의 개념이 존재한다
- 주 생성자는 constructor 키워드를 통하여 선언하며 생략도 가능하다
- 주 생성자는 class 클래스명 constructor() {} 형식을 가진다
- 주 생성자는 클래스 선언과 동시에 진행되며, 하나밖에 선언할 수 없다
- 주 생성자의 본문 영역은 init 키워드로 영역지정이 가능하다
- 보조 생성자는 class 내부 본문안에 constructor 키워드를 이용하여 선언
- 보조 생성자의 경우 여러개를 선언할 수 있다
class User constructor(name : String)
{
var Mname = name
}
class User2(name : String)
{
var Mname = name
init
{
println("init OK")
}
}
class User3
{
constructor(name : String)
{
println("constructor(name) = $name")
}
constructor(name : String, age : Int)
{
println("constructor(name , age) = $name, $age")
}
}
fun main()
{
// User 클래스의 주 생성자에 의해서 해당 조건의 매개변수를
// 포함하여 생성해 주어야 한다.
var user = User("Kim")
// 주 생성자 constructor는 생략가능
// init 영역의 지정으로 주 생성자 영역이므로 user2 생성과 동시에
// init OK가 출력된다
var user2 = User2("Lee")
println("user2 name = ${user2.Mname}")
// 보조 생성자는 여러개를 선언할 수 있다
// 보조 생성자의 경우 매개변수에 따라 자동으로 선택되어
// 해당 constructor에 맞춰서 출력이 된다.
var user3 = User3("Hong")
var user4 = User3("Park", 10)
}
728x90
반응형
'나미 > 안드로이드' 카테고리의 다른 글
코틀린으로 앱개발까지.. 12. 오브젝트 클래스 (92) | 2023.12.22 |
---|---|
코틀린으로 앱개발까지.. 11. 데이터 클래스 (100) | 2023.12.11 |
코틀린으로 앱개발까지.. 10. 클래스 오버라이딩 (44) | 2023.12.03 |
코틀린으로 앱개발까지.. 9. 클래스 상속 (37) | 2023.11.17 |
코틀린으로 앱개발까지.. 7. 반복문(for, while) (2) | 2023.10.19 |
코틀린으로 앱개발까지.. 6. 조건문 (if else, when) (2) | 2023.10.18 |
코틀린으로 앱개발까지.. 5. 배열 (Array, List, Set, Map) (0) | 2023.10.15 |
코틀린으로 앱개발까지.. 4. 함수, nothing, null허용 (2) | 2023.10.10 |
코틀린으로 앱개발까지.. 3. 문자와 문자열 (1) | 2023.10.10 |
The emulator process for AVD Pixel_2_API_30 has terminated (2) (0) | 2023.10.10 |