일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 인텔리제이
- 이클립스
- tomcat
- 형변환
- 자바
- 엘라스틱서치
- db
- JSP
- 엑셀
- 한글 깨짐
- 쿼리
- 이클립스 설정
- 도커
- 자바 리스트
- 데이터베이스
- spring 오류
- java 오류
- spring form
- Java
- docker
- 자바스크립트
- 에러
- JavaScript
- HTML
- elasticsearch
- CSS
- jQuery
- eclipse 설정
- Excel
- Eclipse
Archives
- Today
- Total
개발노트
상속 (Inheritance) 본문
반응형
상속
- 기존 클래스에서 사용하던 기능이나 특성을 물려받아 새로운 클래스를 만들어서 사용하는 것
- 사용이유
: 상속 개념이 없다면, 기존의 클래스에서 새로운 함수나 변수를 새롭게 정의해야 하지만,
상속을 사용하면 자식 클래스에서 부모 클래스의 코드를 그대로 물려받고 새롭게 추가할 부분만 정의할 수 있다.
( 코드 재활용 및 개발 기잔 단축의 효과가 있음)
- 기존 클래스를 수정하지 않고 프로그램을 수정할 수 있다.
- 다중 상속은 불가능
( 부모 클래스 여러 개를 한꺼번에 상속 받을 수는 없다.)
class 자식클래스 extends 부모클래스 {
}
사용 예제
// 부모 클래스
class parent{
void method1(){}
}
// 자식 클래스
class child extends parent{
void method2(){}
}
// 제 3의 클래스
public class Test{
public static void main(String[] args){
child c = new child(); // 자식 클래스 객체 생성 (자식 클래스 기준 사용법)
c.method1(); // 부모 클래스의 메소드 사용
c.method2(); // 자식 클래스의 메소드 사용
}
}
※ 상속 클래스 사용 시, 함수의 동작 순서가 존재함
▶ 부모 클래스
class Parent{
void example01(){}
void example02(){}
}
▶ 자식 클래스
class Child extends Parent{
void example02(){}
}
사용 1 - 자식 클래스 기준 사용 (기본)
1) 자식 클래스로 이동
2) 자식 클래스에 해당 메서드가 없으면 부모 클래스로 이동
3) 부모 클래스에서 해당 메서드 실행
// 자식 클래스 기준 사용
Child child = new Child();
child.exmaple01(); // 부모 클래스의 메소드
child.exmaple02(); // 자식 클래스의 메소드
Parent parent = child;
parent.exmaple01();
parent.exmaple02();
사용 2 - 부모 클래스 기준 사용
※ 부모는 자식을 포함할 수 있지만, 자식은 부모를 포함할 수 없다.
만일, 자식이 부모를 포함하려면, 형변환을 해야 한다. (다형성)
1) 부모 클래스에서 확인
2) 자식 클래스로 이동
3) 자식 클래스에 해당 메서드가 있는 경우, 자식 클래스에서 메소드 실행
자식 클래스에 해당 메소드가 없는 경우, 부모 클래스에서 메소드 실행
→ 조건: 사용하려고 하는 자식 클래스의 함수가 반드시 부모 클래스에 존재해야 함
// 부모 기준
Parent parent = new Chlid();
parent.example01(); // 부모 클래스 메소드
parent.example02(); // 자식 클래스 메소드
// 자식 기준
Child child = (Parent) parent;
child.example01();
child.example02();
반응형
'Programming > JAVA' 카테고리의 다른 글
Singleton 패턴 (0) | 2022.05.06 |
---|---|
추상화 (Abstract / Interface) (0) | 2022.05.05 |
static 기능 (0) | 2022.05.04 |
JVM / JDK / JRE (0) | 2022.05.04 |
배열 (0) | 2022.05.01 |