슈퍼클래스와 서브클래스
슈퍼클래스와 서브클래스는 상속의 기능으로 연결되어 있습니다.
베이스가 되는 클래스를 슈퍼클래스, 슈퍼클래스의 멤버와 메소드를 전달받아 사용할 수 있는 서브클래스 입니다.
서브클래스의 super 메소드
서브클래스는 슈퍼클래스의 메소드를 사용할 수 있다보니 생성자또한 사용할 수 있습니다.
그렇지만 서브클래스의 객체를 만들때는 슈퍼클래스의 객체를 따로 생성하지 않습니다.
그렇다면 슈퍼클래스의 생성자가 여러개인 경우 어떻게 호출을 해야할까요?
super 메소드
서브클래스에서 super 메소드를 사용해서 슈퍼클래스의 생성자를 사용할 수 있습니다.
서브클래스의 super 메소드의 인자에 따라 슈퍼클래스의 생성자가 다르게 호출됩니다.
참고로 super 메소드는 생성자를 호출하는 기능이기 때문에,
함수 내에서 맨 첫 부분에 선언해 주어야 합니다.
예제 코드
서브클래스인 B 클래스에서 객체를 생성하면서 생성자를 지정해 주었습니다.
생성자가 생성될 때 super 메소드의 인자에 따라 슈퍼클래스의 생성자가 다르게 호출되는 걸 확인할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class superTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
B b1 = new B();
B b2 = new B(1);
B b3 = new B(1,"a");
}
}
class A {
public A () {
System.out.println("인자가 없는 A 생성자");
}
public A (int a1) {
System.out.println("인자가 1개인 A 생성자");
}
public A (int a1, String s1) {
System.out.println("인자가 2개인 A 생성자");
}
}
class B extends A {
public B () {
super();
System.out.println("인자가 없는 B 생성자");
}
public B (int a1) {
super (1);
System.out.println("인자가 1개인 B 생성자");
}
public B (int a1, String s1) {
super (1, "a");
System.out.println("인자가 2개인 B 생성자");
}
}
|
cs |
자바 super 함수
자바 슈퍼클래스 오버로딩
자바 서브클래스에서 슈퍼클래스 생성자 호출방법
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] 자바 public, private, protected 접근자의 차이점 (0) | 2020.12.13 |
---|---|
[JAVA] this() 와 super() 의 차이점 (0) | 2020.12.13 |
[JAVA] 슈퍼클래스와 서브클래스의 상속 알아보기 (0) | 2020.12.13 |
[JAVA] 자바 Math 클래스를 사용하는 방법 (0) | 2020.12.12 |
[JAVA] 문자를 숫자로, 숫자를 문자로 변환하는 방법 toString, parseInt (0) | 2020.12.12 |