새소식

반응형
250x250
My Study/Kotlin

Study About Kotlin 6

  • -
728x90
반응형

Kotlin에서의 접근 제어

Java에는 4종류의 접근 지시어가 있다.

 

public : 모든 곳에서 접근 가능

protected : 같은 패키지 또는 하위 클래스에서만 접근 가능

default : 같은 패키지에서만 접근 가능 (기본값)

private : 선언된 클래스 내에서만 접근 가능

 

Kotlin에도 4종류의 접근 지시어가 있다.

 

public : 모든 곳에서 접근 가능 (기본값)

protected : 선언된 클래스 또는 하위 클래스에서만 접근 가능

internal : 같은 모듈에서만 접근 가능

private : 선언된 클래스 내에서만 접근 가능

 

* Kotlin에선 패키지를 namespaces를 관리하기 위한 용도로만 사용하고 가시성 제어에는 사용 X

* 모듈 : 한 번에 컴파일되는 Kotlin 코드

 

Kotlin에서의 Object 키워드

스태틱 함수와 변수

 

public class JavaPerson {
	
    private static final int MIN_AGE = 1;
    
    public static JavaPerson newBaby(String name) {
    	return new JavaPerson(name, MIN_AGE);
    }
    
    private String name;
    
    private int age;
    
    private JavaPerson(String name, int age) {
    	this.name = name;
        this.age = age;
    }
}

 

위 코드를 Kotlin코드로 바꿀 시 아래와 같이 변경된다.

class Person private constructor(var name: String, var age: Int) {
	companion object {
    	val MIN_AGE = 1
        
        fun newBaby(name: String): Person {
        	retrun Person(name, MIN_AGE)
        }
    }
}

 

Kotlin에서는 static이 존재하지 않고 companion object라는 동행 객체로 작성한다.

 

static : 클래스가 인스턴스화 될 때 새로운 값이 복제되는게 아니라 정적으로 인스턴스끼리의 값을 공유

companion object : 클래스와 동행하는 유일한 object

 

위 코드의 companion object 속 val 앞에 const 를 붙이지 않으면 런타임시 변수 할당

const 를 붙이면 컴파일시 변수를 할당을 한다.

 

또한 const는 상수로 기본 타입과 String에만 붙일 수 있다.

 

companion object는 하나의 객체로 간주되어 이름을 붙일 수 있고 interface도 구현할 수 있다.

 

또한 유틸성 함수를 넣어도 되지만 최상단 파일을 활용하는 것을 추천한다.

 

싱글톤

private static final JavaSingleton INSTANCE = new JavaSingleton();

private JavaSingleton() {}

public static JavaSingleton getInstance() {
	return INSTANCE;
}

 

위 코드는 Java의 singleton이다.

 

object Singleton { var a: Int = 0 } 이와 같이 object만 붙여주면 끝이다.

 

익명클래스

 

public static void main(String[] args) {
	moveSomething(new Movable() {
    	@Override
        public void move() { System.out.println("움직인다~~"); }
        
        @Override
        public void fly() { System.out.println("난다!!!!") }
    });
}

private static void moveSomething(Movable movable) {
	movable.fly();
    movable.move();
}

 

이런 식으로 Java에서는 익명 클래스를 만들 때 new Movable로 객체를 생성해줘야 했다.

 

하지만 Kotlin에서는 object : Movable {} 로 가능해서

 

아래 코드와 같이 바꿀 수 있다.

fun main() {
	moveSomething(object : Movable {
    	override fun move() {
        	println("무브")
        }
        
        override fun fly() {
        	println("날다")
        }
    })
}

private fun moveSomething(movable: Movable) {
	movable.move()
    movable.fly()
}

 

728x90
반응형

'My Study > Kotlin' 카테고리의 다른 글

Study About Kotlin 8  (0) 2024.03.28
Study About Kotlin 7  (0) 2024.03.26
Study About Kotlin 5  (0) 2024.02.28
Study About Kotlin 4  (1) 2024.02.28
Study About Kotlin 3  (0) 2024.02.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.