자바 this 와 super



this?


this를 사용 하여 클래스 내에 맴버 변수나 메소드를 가리킬 수 있다.

다음 예를 보자


package sample;


public class human {

protected int age;

private String name;

private String job;

public void setHumanInfo( int age, String name, String job)

{

this.age = age;

this.name = name;

this.job = job;

}

}


클래스의 맴버 변수 명이 age 인데 setHumanInfo 함수 인자 값 역시 age 이다.

둘다 age 값인데 어떤게 맴버 변수이고 어떤게 인자인지 구분할 길이 없다.

이럴때 쓰이는 것이 this 인데 this를 쓰면 클래스의 맴버 변수를 가리킨다.

또한 this는 맴버 함수도 가리킬 수 있다. 


super?


super를 사용 하여 상위(부모)클래스 내에 맴버 변수나 메소드를 가리킬 수 있다.

이때 상위 클래스의 접근 범위가 public 이나 protected로 되어 있어야 접근이 가능하다.

위에 human 클래스에 age는 protected로 접근 범위가 설정 되어있다.


다음은 human 클래스를 상속한 korean 클래스의 예제이다.


package sample;


public class korean extends human {

int age;

public void setAge(int age){

super.age = 1;

this.age = 2;

System.out.println("super.age : " + super.age );

System.out.println("this.age : " + this.age );

System.out.println("age : " + age );

}

}


[결과]

super.age : 1

this.age : 2

age : 10


korean 클래스는 human을 상속 했기 때문에 

super.age는 human의 맴버 변수

this.age는 korean의 맴버 변수


이로써 this, super에 대한 사용방법에 대해 알아봤습니다.

궁금한 점 있으면 댓글 달아주시면 답변 드리겠습니다.

도움이 되셨나요?



반응형

+ Recent posts