오늘은 Java의 this와 super에 대해 알아보려고 한다
This
public class Main {
public static void main(String[] args) {
Person p = new Person(12, "tom");
p.hi("hana");
// 출력
// method : hana
// this : tom
}
}
class Person {
int age;
String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public void hi(String name) {
System.out.printf("method : %s\nthis : %s", name, this.name);
}
}
this는 클래스안에 있는 멤버 변수 또는 함수를 말한다
this가 쓰이는 곳은 함수안의 매개변수와 클래스 안에 멤버 변수의 이름이 동일할 때 사용한다
Super
public class Main {
public static void main(String[] args) {
Person p = new doctor(22, "Jinsu", 173);
// 출력
// method : haha
// this : Jinsu
}
}
class Person {
int age;
String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public void hi(String name) {
System.out.printf("method : %s\nthis : %s", name, this.name);
}
}
class doctor extends Person {
int height;
public doctor(int age, String name, int height) {
super(age, name);
super.hi("haha");
this.height = height;
}
public void hi() {
System.out.println("hi");
}
}
super은 자신이 상속된 클래스를 말한다
Class doctor은 생성자로 age, name, height를 받는데 super(age, name)을 사용
age와 name은 부모 생성자로 보내 멤버 변수에 저장하였다.
이렇게 하는 이유는 코드를 간략화할 수 있기 때문이다.
그리고
super.hi("haha")는
부모 클래스의 hi를 가리킨다
끝