java
JAVA - super() 는 무엇일까?
super() 는 상속받은 부모 클래스의 변수명이나 클래스 변수를 참조하고, super() 는 부모 클래스 생성자를 호출합니다.
super 변수
super 는 부모 클래스 인스턴스 변수를 참조할 때 사용합니다.
// ex.1)
class A{
public int a = 10;
public int b = 20;
A(){
System.out.println("A class 기본생성자");
}
A(int a){
this.a = a;
System.out.println("A class int a 생성자");
}
}
class B extends A{
public int a = 50;
public int b = 60;
B(){
System.out.println("B class 기본 생성자");
// A 클래스의 a 변수를 얻습니다.
System.out.println("super.a = " + super.a);
// A 클래스의 b 변수를 얻습니다.
System.out.println("super.b = " + super.b);
System.out.println("this.a = " + this.a);
System.out.println("this.b = " + this.b);
}
}
public class Ex01 {
public static void main(String[] args) {
new B();
}
}
아래는 결과 화면입니다.
// ex.2)
class A{
public int a = 10;
public int b = 20;
A(){
System.out.println("A class 기본생성자");
}
A(int a){
this.a = a;
System.out.println("A class int a 생성자");
}
}
class B extends A{
public int a = 50;
public int b = 60;
B(){
// super() 객체 생성자를 이용해 부모 클래스의 A(int a) 를 호출합니다.
super(5);
System.out.println("B class 기본 생성자");
// A 클래스의 a 변수를 얻습니다.
System.out.println("super.a = " + super.a);
// A 클래스의 b 변수를 얻습니다.
System.out.println("super.b = " + super.b);
System.out.println("this.a = " + this.a);
System.out.println("this.b = " + this.b);
}
}
public class Ex01 {
public static void main(String[] args) {
new B();
}
}
아래는 결과 화면입니다.
super 변수로 함수를 호출할 수 있습니다.
// ex.3)
class A{
public void doA() {
System.out.println("A 클래스의 doA() 입니다.");
}
}
class B extends A{
B(){
// A 클래스의 doA() 함수를 호출합니다.
super.doA();
}
}
public class Ex01 {
public static void main(String[] args) {
new B();
// 결과 : A 클래스의 doA() 입니다.
}
}
super() 객체 생성자
super() 는 부모 클래스 생성자를 호출합니다.
// ex.4)
class AAA{
AAA(){
System.out.println("AAA 생성자");
}
AAA(int a){
System.out.println(a);
}
}
class BBB extends AAA{
BBB(){
super();
System.out.println("BBB 생성자");
}
BBB(int a){
super(a);
System.out.println("a = " + a);
}
}
public class Ex01 {
public static void main(String[] args) {
// BBB 클래스의 BBB(int a) 를 호출하면
// 부모 클래스 AAA 클래스의 AAA(int a) 를 호출합니다.
/* 결과:
* 20
* a = 20
*
*/
new BBB(20);
}
}
1 댓글
ex02 번 문제
답글삭제출력이
A class int a 생성자
B class 기본 생성자
super.a = 5
super.b = 20
this.a = 50
this.b = 60
이렇게 나옵니다.