this 현재 클래스의 인스턴스를 가리킵니다. super 는 부모 클래스를 가리킵니다. 현재 클래스의 인스턴스에 있는 속성이나 함수를 제어하려면 this.setName() 을 하고 부모 클래스의 함수를 호출하고 싶으면 super.setName() 을 입력합니다. 아래 소스를 보면서 어떻게 사용하는지 알아 보도록 하겠습니다.
◎ 클래스의 속성과 매개변수의 이름이 같을 때 |
▼ 아래 소스는 this 를 사용하지 않았을 때 상황입니다. 주로 set/get 함수를 만들 때 실수하는 경우 입니다. 매개 변수의 이름과 Fruit 에 내에 지역변수 이름이 같기 때문에 Fruit 객체의 name 속성에 값이 저장되지 않습니다. 이 때 Fruit 인스턴스를 가리키는 this 키워드를 사용해야 되는 것입니다.
public class Fruit {
public String name;
public String color;
public double weight;
public Fruit(String name, String color, double weight) {
name = name;
color = color;
weight = weight;
}
public static void main(String[] args) {
Fruit banana = new Fruit("banana", "yellow", 5.0);
System.out.println("name : " + banana.name);
System.out.println("color : " + banana.color);
System.out.println("weight : " + banana.weight);
}
}
▼ 아래 그림처럼 매개변수로 넘어온 값을 Fruit 속성에 저장하려면 모든 속성에 this 를 붙여 줍니다.
public class Fruit {
public String name;
public String color;
public double weight;
public Fruit(String name, String color, double weight) {
this.name = name;
this.color = color;
this.weight = weight;
}
public static void main(String[] args) {
Fruit banana = new Fruit("banana", "yellow", 5.0);
System.out.println("name : " + banana.name);
System.out.println("color : " + banana.color);
System.out.println("weight : " + banana.weight);
}
}
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법 ▶ 자바(Java) 주석 Comments 소스 내에 작성하는 방법 ▶ 자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 ▶ Java 를 알기위한 기본 용어 정리와 관계도 ▶ 자바(Java) 데이터 형변환 char -> String 여러가지 방법 |
◎ 오버로딩된 다른 생성자 호출하는 방법 |
▼ this() 는 자기자신의 생성자를 호출함으로서 생성자의 초기화 과정을 반복하지 않아도 됩니다. this(x, y) 처럼 파라미터가 있으면 자기 자신의 클래스에 해당하는 동일한 파라미터 객체를 가진 함수를 호출하게 됩니다. super() 는 상속받은 바로 위 클래스의 생성자를 호출하게 됩니다. super(x, y) 는 this 의 파라미터 넘기는 함수처럼 상속받은 클래스에서 동일한 파라미터 객체를 가진 함수를 호출합니다. 이것이 this 와 super 의 차이점입니다. 주의 할점은 this() 와 super() 는 { 바로 다음에만 쓸 수 있습니다. 그래서 this(), super() 는 같이 쓸 수가 없는 것입니다.
class UpperClass {
int x;
int y;
public UpperClass() {
x = 10;
y = 20;
}
public UpperClass(int x) {
this(); // 자신의 클래스 public UpperClass() 생성자 호출
this.x = x;
}
public UpperClass(int x, int y) {
this(x); // 자신의 클래스 public UpperClass(int x) 생성자 호출
this.y = y;
}
}
class LowerClass extends UpperClass {
int r;
public LowerClass() {
super(); // 상위 클래스의 public UpperClass() 생성자 호출.
r = 30;
}
public LowerClass(int x) {
super(x); // 상위 클래스의 public UpperClass(int x) 생성자 호출
r = 30;
}
public LowerClass(int x, int y) {
super(x, y); // 상위 클래스의 public UpperClass(int x, int y) 호출
r = 30;
}
public LowerClass(int x, int y, int r) {
this(x, y); // 자신의 클래스 public LowerClass(int x, int y) 호출
this.r = r;
}
}
public class Exe{
public static void main(String[] ar) {
}
}
◎ 자신의 참조값을 전달하고 싶을 때 |
▼ 어떤 함수에서는 리턴값으로 자기 자신의 참조값을 전달하고 싶을 때가 있습니다. 이 때 this 키워드를 이용함으로써 해결이 가능합니다.
public class Fruit {
public String name;
public String color;
public double weight;
public Fruit(String name, String color, double weight) {
this.name = name;
this.color = color;
this.weight = weight;
}
public Fruit getInstance() {
return this;
}
}
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법 ▶ 자바(Java) 주석 Comments 소스 내에 작성하는 방법 ▶ 자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 ▶ Java 를 알기위한 기본 용어 정리와 관계도 ▶ 자바(Java) 데이터 형변환 char -> String 여러가지 방법 |
'자바(JAVA)' 카테고리의 다른 글
자바(Java) AWT – Label 오브젝트 사용법과 예제 (1) | 2024.12.19 |
---|---|
자바 Java 윈도우 위치 찾기 명령어 (1) | 2024.12.19 |
자바(Java) 클래스와 함수의 재정의를 방비하는 final 키워드에 대해 알아보자 (1) | 2024.12.18 |
자바 객체 지향 프로그램, 객체 생성과 사용 (5) | 2024.11.09 |
자바 (Java) System.out 콘솔 프린트 사용하기 (0) | 2024.11.09 |
자바(Java) 다형성, 오버라이딩(Overriding), 오버로딩(Overloading) (3) | 2024.11.09 |
자바(Java) for 문 이용해서 피라미드, 역 피라미드 만드는 방법 (2) | 2024.08.04 |
자바(Java) 실행대기 함수 Sleep 와 Wait 함수 차이와 구현 방법 (0) | 2024.04.08 |