본문 바로가기

JAVA/개념

JAVA :: super 예약어

super 예약어

 

super() 생성자

 

자손클래스의 객체 생성시 부모 클래스의 객체 생성을 먼저 함
=> 자손클래스의 생성자에서 부모 클래스의 생성자를 먼저 호출해야함


자손클래스에서 부모클래스의 생성자 호출시 사용
자손클래스의 생성자 첫줄에 구현해야함
부모클래스의 생성자 중 매개변수가 없는 생성자가 있다면 생략 가능 : super()
부모클래스의 생성자 중 매개변수가 있는 생성자가 있다면 생략 불가 : super(....)

 


 super 참조변수

 

부모클래스의 객체를 참조하는 참조변수
인스턴스 메서드에서만 사용 가능

 

예시

 

super() 생성

class Phone2 {

boolean power;

int number;

Phone2(int number){

this.number = number;

}

}

class SmartPhone2 extends Phone2 { //기본생성자 제공시 오류 발생함

SmartPhone2(){

super(1234); // 부모클래스의 생성자 호출

}}

 

 

super 참조변수

 

class Parent{

int x = 10;

Parent(int x){

this.x = x;

}

}

class Child extends Parent{

int x = 20;

Child(){

super(100);

}

void method() {

int x = 30;

System.out.println("x="+x);

System.out.println("this.x="+this.x);

System.out.println("super.x="+super.x);

}

}

public class SuperEx1 {

 

public static void main(String[] args) {

Child c = new Child();

c.method();

 

super 참조변수 출력

x=30

this.x=20

super.x=100