[Java] 상속에 대해 알아보자
- Language/JAVA
- 2023. 7. 8.
상속
Java의 대표적인 기능 중 하나이다.
Class 내의 함수 혹은 필드를 그대로 다른 Class에게 전달하는 의미이다.
물건을 다른 사람에게 전달해주듯 변수명, 함수명을 같이 사용할 수 있도록 한다.
class TestA {
void testA() {
System.out.println("testA의 전유물");
}
}
class TestB extends TestA {
void testB() {
System.out.println("testB의 전유물");
}
}
public class ExtendStudy {
public static void main(String[] args) {
TestB testB = new TestB();
testB.testA();
testB.testB();
}
}
TestB의 Class만을 호출했지만, TestA Class의 testA() 함수를 사용하는 것을 확인할 수 있다.
이는 TestA를 TestB가 상속함으로써 TestB는 TestA의 함수의 소유권을 가져올 수 있도록 할 수 있다.
여기서 알 수 있는 것은 main에서 TestA Class의 내용을 불러올 수 있던 것은 extends TestA하고의 연관선이 있다는 것을 추측할 수 있게 된다.
언제 상속을 호출 할까?
package Test;
class TestA {
TestA() {
System.out.println("1번째: 여기가 제일 먼저");
}
void testA() {
System.out.println("testA의 전유물");
}
}
class TestB extends TestA {
TestB() {
super();
System.out.println("2번째: super()는 생략이 되었다.");
}
void testB() {
System.out.println("testB의 전유물");
}
}
public class ExtendStudy {
public static void main(String[] args) {
TestB testB = new TestB();
testB.testA();
testB.testB();
}
}
위의 코드로 다시 바꾸어서 실행했을 때, TestA Class가 생성될 때 불러오는 생성자가 언제 만들어지는 것인지 알 수 있다.
상속을 알기 위해서는 생성자를 먼저 알고 있으면 좋다.
생성자는 Class 생성시 반드시 존재해야 하지만, 너무나도 당연하게 있다시피해서 생략이 되는 기능 중 하나이다.
생략이 된다는 의미는 필요 없다는 것이 아닌, Class의 생성을 빠르게 하기 위해서 생성자가 없어도 Java가 알아서 생성자가 있다고 생각 시킨다에 가깝다.
마찬가지로 상속하게 되면 super(); 라는 메서드가 생성되는데 이 또한 너무나도 당연하여 생략되는 기능 중 하나이다.
상속받는 대상의 생성자가 실행되었을 때, 제일 먼저 super(); 함수가 실행 되는 것을 반드시 알고 있어야 한다.
super()
super()는 this()메서드가 같은 클래스의 다른 생성자를 호출한다면, super()는 부모 클래스의 생성자를 호출할 때 이용한다.
이를 활용한다면, this가 자기자신의 변수와 메서드를 불러오듯이 super는 부모클래스의 변수와 메서드를 불러올 때 이용된다.
'Language > JAVA' 카테고리의 다른 글
[Java] String 문자열 비교 ==와 equals()의 차이점 (0) | 2023.07.31 |
---|---|
[Java] Java 음수에 대해 알아보자 (0) | 2023.07.14 |
[Java] 셀레니움 설치하기 (0) | 2022.09.27 |
[Java] FCM Push 전송하기, json Version (0) | 2022.05.12 |
[Java] Cookie 활용하기 (0) | 2022.05.10 |