라벨이 Super인 게시물 표시

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 Overriding

Kotlin Overriding  Kotlin의 모든 객체는 부모 클래스형 참조 변수에 담을 수 있다. 부모 클래스형 참조 변수를 사용하면 부모 클래스에 정의되어 있는 멤버만 사용이 가능하다. fun main () { val obj1:SubClass1 = SubClass1() val obj2:SuperClass1 = obj1 println ( " ${ obj2. superA1 } " ) obj2.superMethod1() println ( " ${ obj2.subA1 } " ) // obj2 는 SuperClass 참조 변수이므로 , obj1 으로 선언을 했더라고 , 부모클래스의 멤버 변수 함수만 사용가능하다 . obj2.subMethod1() } open class SuperClass1{ var superA1 = 100 fun superMethod1 (){ println ( "SuerMethod1" ) } } class SubClass1 : SuperClass1() { var subA1 = 200 fun subMethod1 () { println ( "SubClass" ) } } Kotlin: Unresolved reference: subA1 Overriding  부모클래스가 가지고 있는 메서드를 자식 클래스에서 재 정의하는 개념이다. 부모가 가지고 있는 메서드의 이름, 매개 변수 형태 모두 동일해야 한다. fun main () { val obj1:SubClass1 = SubClass1() println (obj1. superA1 ) obj1.superMethod1() } open class SuperClass1{ var superA1