개발여행일지~
코틀린 4일차~! (메소드와 클래스, 생성자) 본문
메소드 설계
- 특정한 로직을 가지는 소스코드에 별명(이름)을 붙일 수 있다.
- 이름이 붙은 로직은 앞으로 메소드라고 부를 수 있다.
Kotlin의 메소드 구조
fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
소스코드 로직
}
클래스 설계
- Object Oriented Programming (OOP)
- 코틀린은 모든것이 클래스형태이므로 객체화할 수 있다.
- 프로그램에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만든다.
- 객체들간의 적절한 결합을 통해 유지보수를 쉽게 할 수 있다.
5대 키워드
- 클래스
- 추상화
- 캡슐화
- 상속
- 다형성
특별한 클래스
데이터 클래스 (data class)
- 정보 프로퍼티만 갖고있는 클래스 필요 시 (데이터 관련) 사용
- data class 클래스이름 (val name : String, val age : Int,)
실드 클래스 (sealed class)
- 클래스 상속과 관련된 개념이다.
- 상속받을 수 있는 자식클래스를 미리 정의할 수 있다.
- 무분별한 상속을 방지할 수 있다.
- 컴파일 시점에 생성할 수 있는 자식을 알 수 있기 때문에 효율적으로 다형성 구현한다.
- sealed class 부모클래스 {class 자식클래스1 : 부모클래스생성자 class 자식클래스2: 부모클래스 생성자}
오브젝트 클래스 (object class)
- 프로그램을 실행하는 동시에 인스턴스화 한다
생성자
- 기본 생성자와 명시적 생성자가 존재한다.
- 기본 생성자는 이전까지 클래스를 만들던 행위와 차이가 없다.
- 명시적 생성자는 주 생성자와 부 생성자로 구분할 수 있다.
Init(주 생성자)의 사용 예시
fun main() {
}
// 클래스 선언부에 생성자를 명시함
class Character(_name:String, _hairColor:String, _height:Double) {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
// 매개변수를 직접 넘기지않음
init {
println("매개변수없는 생성자 실행 완료!")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
Constructor (부 생성자)의 사용 예시
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
// 명시적 생성자 (Constructor)
// _name, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
생성자를 어디에 사용하는가!
- 한 가지의 형태로 클래스를 실체화할때는 주 생성자를 활용할 수 있다.
- 여러 형태로 클래스를 실체화할때는 보조 생성자를 활용할 수 있다.
- <이름, 머리색상, 키> 또는 <이름, 머리색상, 키, 나이, 성별> 처럼 여러개의 생성자를 통해 최초로 코드를 실행할 때는 부 생성자를 이용한다.
- 항상 <이름, 머리색상, 키>만 생성자에서 최초로 코드를 실행할 때는 주 생성자를 사용한다.
후기
메소드, 클래스, 생성자 등 구현을 할때 이게 뭔가~~ 라는 생각이 들어 프로그램을 구현할때 힘들었다.
하루종일 구글링하고 찾아본결과 조금은 이해하고 알꺼같다.
'코틀린 공부정리' 카테고리의 다른 글
지연초기화 (0) | 2023.07.24 |
---|---|
예외 처리 (try-catch, throw의 구조) (0) | 2023.07.24 |
코틀린 3일차 공부! (OCP, 객체의 결합도&응집도 정리) (0) | 2023.07.19 |
코틀린 2일차! (0) | 2023.07.18 |
코틀린 1일차! (0) | 2023.07.17 |