728x90
data class
상속 불가, data 처리하기 위해 특화된 클래스data class 이름 () 안에 필드들을 정의할 수 있다.
{} 안에 멤버필드나 메소드를 정의할 수도 있다.
data 클래스도 멀티리턴처럼 보일 수 있다. (Destructuring Declarations)
가장 유용한 것은 copy() 함수
일반 클래스와 데이터 클래스 정의
class A
{
var name : String = "clas A"
var power : Int = 0
}
data class DataA(var name : String = "이름없음",var level : Int)
{
var jop : String =""
// 연산자 오버로딩에 data class 많이 사용
operator fun plus (d : DataA){
this.level + d.level
}
}
snake , 3
DataA(name=AAA, level=3)
DataA(name=이름없음, level=21)
DataA(name=이름없음, level=3)
programmer
DataA(name=카피이름, level=3)
name: 카피이름
카피이름, 3
Object
3가지 형태 사용
class 명 앞에 사용해서 static class 선언
class 내부의 특정멤버들만 static (companion object)
이름 없는 객체에 클래스 상속 받아서 특정 메소드 오버로드 받을 때
.
Kotlin
정의문
object SingleTon{
var showMessage = {msg :String -> println(msg)}
}
class StaticTest
{
var msg: String = "일반 객체로 생성하면 이 변수를 액세스 가능함"
// companion object {} 안에서 구현해야 static 가능
companion object{
var staticVar = "StaticTest.staticVar"
fun staticFunc() = println("StaticTest.staticFunc")
}
}
abstract class fakeClickHandler{
abstract fun onClick()
}
실행문
fun main()
{
// 1. 클래스 전체를 싱글톤으로 사용할 때, static class
Singleton.showMessage("싱글톤입니다.")
val obj = StaticTest()
println(obj.msg)
println()
// 2. companion object
println(StaticTest.staticVar)
StaticTest.staticFunc()
// 3. Android에서 자주 사용
// abstract 사용
var clickObject = object : FakeClickHandler(){
override fun onClick() {
println("Click !")
}
}
clickObject.onClick()
}
<실행결과>
싱글톤입니다.
일반 객체로 생성, 이 변수를 액세스 가능
StaticTest staticVar
StaticTest staticFunc
Click !
java
class StaticTest
{
String msg = "일반 객체로 생성, 이 변수를 액세스 가능";
static String staticVar = "StaticTest staticVar";
public static void staticFunc(){
System.out.println("StaticTest staticFunc");
}
}
public class main {
public static void main(String[] args) {
System.out.println(StaticTest.staticVar);
StaticTest.staticFunc();
}
}
StaticTest staticVar
StaticTest staticFunc
java 의 static 대체
kotlin
companion object{
var staticVar = "StaticTest staticVar"
fun staticFunc() = println("StaticTest staticFunc")
}
java
static String staticVar = "StaticTest staticVar";
public static void staticFunc(){
System.out.println("StaticTest staticFunc");
}
abstract 구현
abstract class FakeClickHandler{
abstract fun onClick()
}
var clickObject = object : FakeClickHandler(){
override fun onClick() {
println("Click !")
}
}
이상
data class, Object
fast campus - 올인원 패키지 : 안드로이드 앱 개발
댓글