질문
1.
08_LoopEX에서 다른 입력함수들도 값을 반환하는데 학생수 입력함수만 Int반환값과 return을 사용하는 이유가 궁금합니다
•
코드의 간결성과 가독성을 위한 refactoring?
-모든 기능의 매개변수가 되는 studentCount 함수의 안정성과 재사용성을 높이기 위하여?
2.
클래스와 함수의 명확한 사용 목적의 차이
•
프로젝트 내에서 공통적으로 자주 사용하는 기능들을 관리하기 위하여?
3.
property를 정보를 가진 속성의 개념으로 봐야 하는지 setter getter를 사용하는 Literal로 봐야 하는지 헷갈립니다
4-1 mutableList에서 Int타입을 add할 때
val b = mutableListOf(1, 2, 3)
println(b)
b.add(4)
println(b)
b.add(3,2) // index = 3, value = 2
println(b)
b.removeAt(1)
println(b)
Plain Text
복사
•
출력값
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 2, 4] <--2는 반복되어 출력되는데 3은 한번만 출력되는 이유
[1, 3, 2, 4] <-- removeAt은 1을 할당했는데 2가 사라진 이유
4-2 index에 타입추론으로 생성되는 index와 element 의 의미
•
(a, b) a인덱스에 위치한 속성b로 읽는 것이 맞나요?
클래스
fun main(){
var toyList = mutableListOf<Toy>()
var toy1 = Toy("TypeA", 200)
toyList.add(toy1)
toyList.add(toy1)
toyList.add(toy1)
for(toy in toyList){
println(toy.name)
}
}
1.왜 배열 안에서는 같은 이름의 클래스가 선언 되도 문제가 없는 건가요?
2. Package, module 사용성이 뭔가요?
3. Access modifier의 internal 간단한 설명 사용빈도수
4. Other이 뭔가요?
override fun equals(other: Any?): Boolean {
if(other != null){
// 형변환
val temp = other as TestClass3
if(this.a1 == temp.a1 && this.a2 == temp.a2){
return true
} else {
return false
}
}
return false
}
5. Companion object 내용이 잘 이해가 안갑니다. 개념적인 부분, 사용 용도, 상황에 대해 간략적이라도 설명 부탁합니다. (강의 27)
6. Data class와 일반 클래스의 차이점. 객체의 멤버를 쉽게 관리할 수 있는 기능이 추가된다는데.. 무슨 뜻인지 이해가 안갑니다.
7. 제네릭 <T>
멘토 답변
1.
08_LoopEX에서 다른 입력함수들도 값을 반환하는데 학생수 입력함수만 Int반환값과 return을 사용하는 이유가 궁금합니다
반환 값을 사용하는 것은 오로지 개발자 마음. 반환값에 대한 정답은 없다 :)
Kotlin
복사
2.
클래스와 함수의 명확한 사용 목적의 차이
클래스와 함수의 예시를 들며 사용 목적에 대해서 간단히 설명했습니다.
클래스: 어떤 사물을 추상화한, '데이터'를 가지면서 어떤 역할을 가지고 있는
class Persen(val name: String, val age: Int) {
fun sayName() { print(name:$name) }
}
함수: 단발성, 특정 '액션'에 포커스를 맞춘
ex) Android Toast를 표시
fun showToast(message: String) {
Toast.make(...)
}
Kotlin
복사
3.
왜 배열 안에서는 같은 이름의 클래스가 선언 되도 문제가 없는 건가요?
배열의 메모리 구조를 간단히 설명하면서 배열은 변수 선언과 달리 이름에 영향이 받지 않음을 설명드렸습니다.
fun main(){
var toyList = *mutableListOf*<Toy>()
var toy1 = Toy("TypeA", 200)
toyList.add(toy1)
toyList.add(toy1)
toyList.add(toy1)
for(toy in toyList){
*println*(toy.name)
}
}
Kotlin
복사
4.
Package 사용성이 뭔가요?
1) 동일한 이름의 클래스를 사용하려고 할 때, package를 이용할 수 있다고 설명함.
2) Package로 클래스의 역할을 유추할 수 있음을 설명했습니다. (가독성 좋은 코딩)
class A
---
package another
class A
Kotlin
복사
5.
Access modifier의 internal 간단한 설명 사용빈도수
동일한 module 내에서 접근 제한하는 접근 지정자
Kotlin
복사
6.
other이 뭔가요?
overrid하는 Any 클래스의 eqauls 함수의 매개변수가 other 임을 설명함. 부모 함수의 매개변수를 따라가서 other로 네이밍됨
override fun equals(other: Any?): Boolean {
if(other != null){
// 형변환
val temp = other as TestClass3
if(this.a1 == temp.a1 && this.a2 == temp.a2){
return true
} else {
return false
}
}
return false
}
Kotlin
복사
7. Companion object 내용이 잘 이해가 안갑니다. 개념적인 부분, 사용 용도, 상황에 대해 간략적이라도 설명 부탁합니다. (강의 27)
클래스간 데이터를 공유하고자 할 때 공유 장소로 이용함을 설명. 유일함을 설명
Kotlin
복사
8.
Data class와 일반 클래스의 차이점. 객체의 멤버를 쉽게 관리할 수 있는 기능이 추가된다는데.. 무슨 뜻인지 이해가 안갑니다.
class와 달리 eqauls, toString, copy 등 데이터를 표현하고, 제어하기 쉽게 해주는 여러 함수들이 생성된다는 것을 디컴파일로 확인함
시간 부족으로 인해 못다룬 내용
8. Null, ? 와 !! 설명 부탁합니다!
9. As 사용 방법. (형변환)
10. 스마트 캐스팅이 정확이 뭔지 모르겠습니다.
11. Sealed class 는 단순히 상속받은 클래스를 부모클래스에 묶어서 정리하는 개념이 맞나요?
12. Reflection “::” 설명 부탁합니다