라벨이 상속인 게시물 표시

Kotlin Interface

Kotlin Interface  Kotlin은 다중 상속을 지원하지 않는다.  특정 클래스를 동시에 두개 이상의 클래스를 상속 받는것을 의미한다.  이 때문에 자기 타입의 변수나 부모형 타입 변수에만 담을 수 있다.  만약, 생성된 객체의 주소 값을 다양한 타입에 변수에 담을 수 있도록 한다면 인터페이스를 활용하면 된다. Interface 여러 부모 클래스를 상속을 받아서 하나의 클래스에 모으고 싶을 때 사용한다. 인터페이스는 클래스가 아니므로 객체를 생성할 떄 사용할 수 없다. 단, 클래스는 한개 이상의 인터페이스를 구현할 수 있으며, 생성된 객체는 구현한 인터페이스형 참조 변수에 담을 수 있다. 인터페이스에는 추상 메서드와 일반 메서드 모두를 구현해서 사용할 수 있다. 인터페이스는 추상 클래스의 목적이 비슷하지만, 하나의 클래스에 여러 인터페이스를 구현할 수 있는 장점을 가지고 있다. fun main () { val obj1 = Inter1() // Error } interface Inter1 { fun inter1Method1 () { println ( "Inter1 의 interMethod1 입니다 ." ) } fun inter1Method2 () } 인터페이스는 객체를 생성 할 수 없으므로, 에러가 발생한다. Kotlin: Interface Inter1 does not have constructors interface Inter1 { fun inter1Method1 () { println ( "Inter1 의 interMethod1 입니다 ." ) } fun inter1Method2 () } class TestClass3: Inter1() { // Error } 인터페이스는 클래스가 아니므로 상속 받는것처럼 () 를 붙이면 안된다. Kotlin: Class 'TestClass3' is not abstract and doe

Kotlin this, super

Kotlin this, super this 객체 자기 자신을 지칭한다. 멤버 변수와 메서드 내부의 변수를 구분할 때 사용한다. 멤버 메서드와 메서드 내부의 메서드를 구분할 떄 사용한다. 생성자에서 다른 생성자를 호출할 때 사용한다. fun main () { val obj1 = TestClass1() obj1.testMethod1() } class TestClass1 { var a1 = 100 fun testMethod1 () { var a1 = 200 println ( "a1 : $ a1 " ) println ( "this.a1 : $this .a1" ) } } this는 객체 자신을 의미하기때문에, 클래스 자체의 멤버변수 100 을 출력한다. 코틀린에서는 메서드 안에 메서드를 만드는게 가능하다. fun main () { val obj1 = TestClass1() obj1.testMethod1() } class TestClass1 { var a1 = 100 fun testMethod1 () { fun testMethod2 () { println ( "testMethod1 내부의 testMothod1" ) } testMethod2() // 내부 함수 호출 this .testMethod2() // 클래스 멤버의 메서드 호출 } fun testMethod2 () { println ( "testMethod2" ) } }  근데, 누가 이렇게 쓸까, 동일클래스에서 클래스 멤버변수랑 메서드 내부 멤버변수의 이름을 동일하게 하거나, 클래스 멤버 메서드랑 내부 멤버 메서드 이름을 동일하게 할 경우는 없을 것으로 생각된다.  아마 정적검사툴이나 보안체크툴에서

Kotlin Any

이미지
Kotlin Any  Kotlin 에서 사용하는 모든 클래스의 부모 클래스이다.  Kotlin은 클래스를 작성할 떄, 상속받지 않는다면 자동으로 Any 클래스를 상속받는다.   Any 클래스에는 모든 객체가 가지고 있어야할 메서드가 제공되고 있으며, 이 메서드들을 overriding 하여 각 클래스의 성격에 맞게 재 구현하여 사용 할 수 있다.  Kotlin 은 직간접적으로 Any를 상속 받고 있기때문에,  Any 가 가지고 있는 메서드를 사용할 수 있다. Kotlin Any 공식 메서드  https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/  따라서, Kotlin 의 모든 Class 는 toString, equals 같은 기본적인 class 의 메서드를 사용할수 있다.  모든 클래스는 Any 클래스를 상속받고 있기때문에, 부모클래스 참조 변수를 통해서 모든 클래스를 통합해서 매개변수로 받을 수 있게 된다.

Kotlin 상속

Kotlin 상속 상속 부모 클래스는 Open 키워드를 사용해야 한다. Java 에서는 아무것도 안붙여도 부모 클래스로 사용할 수 있다.  클래스를 설계 할 때 다른 클래스에 정의한 요소를 그대로 물려받는 것을 상속이라고 한다. 부모 클래스를 정의할 때는 open 키워드를 사용한다.