상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 코틀린에서 확장 프로퍼티는 어떻게 정의하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
코틀린에서 확장 <a href='https://sangseek.com/sangseeks/프로퍼티/ko'>프로퍼티</a>(Extension Property)는 기존 클래스에 새로운 프로퍼티를 추가하는 기능을 제공합니다. <a href='https://sangseek.com/sangseeks/확장 프로퍼티/ko'>확장 프로퍼티</a>는 기존 클래스의 기능을 확장할 수 있지만, 실제로 클래스의 구조를 변경하지는 않습니다. 이는 주로 코드의 가독성을 높이고, 특정 클래스에 대한 추가적인 기능을 제공하는 데 유용합니다. 확장 프로퍼티 정의하기 확장 프로퍼티를 정의하려면, 다음과 같은 형식을 사용합니다: ```kotlin val ClassName.propertyName: PropertyType get() = // 프로퍼티의 값을 반환하는 코드 ``` 여기서 `ClassName`은 확장할 클래스의 이름, `propertyName`은 새로 추가할 프로퍼티의 이름, `PropertyType`은 프로퍼티의 타입을 의미합니다. `get()` 블록 안에는 프로퍼티의 값을 계산하거나 반환하는 로직을 작성합니다. 예제 아래는 `String` 클래스에 `<a href='https://sangseek.com/sangseeks/isPalindrome/ko'>isPalindrome</a>`이라는 확장 프로퍼티를 추가하는 예제입니다. 이 프로퍼티는 문자열이 <a href='https://sangseek.com/sangseeks/회문/ko'>회문</a>인지 여부를 판단합니다. ```kotlin val String.isPalindrome: Bo<a href='https://sangseek.com/sangseeks/olean/ko'>olean</a> get() { return this == this.reversed() } ``` 위의 코드에서 `isPalindrome` 프로퍼티는 `String` 클래스의 인스턴스에서 사용할 수 있으며, 해당 문자열이 회문인지 여부를 반환합니다. 사용 예 이제 `isPalindrome` 확장 프로퍼티를 사용할 수 있습니다: ```kotlin fun main() { val word1 = "level" val word2 = "hello" println("$word1 is palindrome: ${word1.isPalindrome}") // level is palindrome: true println("$word2 is palindrome: ${word2.isPalindrome}") // hello is palindrome: false } ``` 주의사항 1. 확장 프로퍼티는 실제로 클래스에 추가되지 않음 : 확장 프로퍼티는 컴파일 타임에만 존재하며, 런타임에 클래스의 구조를 변경하지 않습니다. 따라서 확장 프로퍼티는 클래스의 인스턴스에 저장되지 않으며, 해당 클래스의 인스턴스가 생성될 때마다 계산됩니다. 2. setter가 없는 확장 프로퍼티 : 확장 프로퍼티는 getter와 setter를 모두 정의할 수 있지만, setter를 정의하지 않으면 읽기 전용 프로퍼티가 됩니다. 위의 예제에서는 `isPalindrome`이 읽기 전용이므로 setter가 없습니다. 3. 상속과의 관계 : 확장 프로퍼티는 <a href='https://sangseek.com/sangseeks/상속 관계/ko'>상속 관계</a>에 있는 클래스에서도 사용할 수 있지만, 부모 클래스의 확장 프로퍼티는 자식 클래스에서 오버라이드할 수 없습니다. 결론 코틀린의 확장 프로퍼티는 기존 클래스에 새로운 기능을 추가하는 간편한 방법을 제공합니다. 이를 통해 코드의 가독성을 높이고, 특정 클래스에 대한 추가적인 기능을 손쉽게 구현할 수 있습니다. 그러나 확장 프로퍼티는 클래스의 구조를 변경하지 않으며, 런타임에 인스턴스에 저장되지 않는다는 점을 유의해야 합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기