부 생성자와 정적 팩토리 질문드립니다.
557
11 câu hỏi đã được viết
부생성자 부분에서 조금 햇갈리는게 생겨서 문의드립니다.
그리고 정적팩토리도 말씀해주셨는데 제가 생각한게 맞나 문의드립니다.
코드는 아래와 같습니다.
아래 주석에 질문 있습니다.
constructor (alien: Alien) : this()<- 이부분에서 this를 좀 나중에 호출하고 싶은지 문의드립니다. 밑에 if를 처리하여 호출하고 싶거든요. 불가능한게 맞을까요?
fun main(args: Array<String>) {
var alien = Alien("에얼리언", AlienType.AType)
//부생성자로 person 생성
var personFromSubConstructor = Person(alien)
println("부생성자로 만든 person의 나이 : ${personFromSubConstructor.age}")
//정적 팩토리로 person생성
val personFromStaticFactory = Person.createPersonFromAlien(alien)
println("주생성자로 만든 person의 나이 : ${personFromStaticFactory.age}")
}
class Person(
val name: String,
var age: Int
){
//에어리언의 타입이 A면 10살, B면 20살
constructor (alien: Alien) : this(alien.name, 0){ //질문1. 일단 임의값으로 주생성상자를 만들어서 객체를 초기화 한 다음에 바꿀수 밖에 없는 것인지 궁금합니다.
if(alien.type == AlienType.AType)
this.age = 10
else
this.age = 20
}
//질문2. 아래와 같은 코드를 정적 팩토리맞을까요?
companion object{
fun createPersonFromAlien(alien: Alien) : Person
= if(alien.type == AlienType.AType) Person(alien.name, 10) else Person(alien.name, 20)
}
}
class Alien(
val name: String,
val type: AlienType
)
enum class AlienType(type: String){
AType("AType"), BType("BType")
}
Câu trả lời 2
0
좋은 질문 남겨주셔서 감사드립니다!! 🙏 (대댓글로 두 번째 질문에 대해서 남겨두었어요~) 혹시라도 또 궁금하신 점 생기시면 편하게 질문 남겨주세요! 감사합니다!! 🙏
0
constructor (alien: Alien) : this(alien.name, if(alien.type == AlienType.AType) 10 else 20)constructor (alien: Alien) : this(alien.name, alien.type.let{
if(it == AlienType.AType)
10
else
20
})첫번째 질문은 위와같이 익스프레션이나 let같은 스코프 펑션 써서 해결하면 되겠꾼여...
0
안녕하세요 용조님!! 😊😊 아이고~ 네네 맞습니다! 말씀해주신 두 가지 방법으로 name을 처리할 수 있습니다! 다만 개인적으로는 두 번째 방법은 age 를 가변 변수 (var)로 열어야 하다보니 불변 변수 (val) 를 쓸 수 있는 첫 번재 방법을 선호합니다!
그리고 질문 주신 두 번째 내용에 대한 답변도 이어 드리자면, 네네 맞습니다!!
Kotlin에서는 static 키워드 대신 companion object 를 활용해 정적인 함수, 정적인 변수를 표현하고 있습니다! 그래서 companion object 안에 객체를 생성하는 코드를 작성하면 정적 팩토리 메소드인 것이 맞습니다!!! ㅎㅎㅎㅎ
수업노트
0
59
1
싱글톤과 스프링
0
74
2
get() = 3
0
55
2
강사님
0
77
1
강의 복습하면서 생긴 질문
1
100
1
Kotlin과 Java의 현업에서의 활용
0
131
2
data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문
0
78
1
코틀린에서 상속 시, 주의점에 대한 질문
1
103
3
내용 이해 질문
0
60
1
자바와 코틀린의 함수형 프로그래밍,
1
93
1
플랫폼 타입 설명 문의
2
81
2
널 아님 단언 관련 질문
0
88
1
강의 중 질문
0
83
2
범위 비교 질문
1
93
2
타입캐스팅 궁금한점 질문드립니다.
1
242
2
코틀린 val 질문
0
168
2
완강 후 Kotlin 이런저런 질문 드려봅니다!
3
413
2
확장함수 스타일 질문
0
141
2
확장 프로퍼티 질문
1
160
1
update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!
1
284
1
java class의 NotNull 어노테이션 인식
1
266
1
[16강] 확장함수 관련 질문입니다!
1
135
2
리턴타입 사용시 any를 사용해도 괜찮은가요?
1
143
1
안녕하세요 scope function 에 receiver 가 없는 경우
1
172
1

