일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MySQL
- 3306
- 생성
- java
- EQUI
- 줄바꿈
- 데이터베이스
- select
- 리눅스 명령어
- Linux
- 삭제
- cmd
- date_add
- 테이블
- pytthon
- visual studio code
- live server
- DISTINCT
- now()
- substring
- 데이터타입
- 집계 함수
- 조인
- DB접속
- foreignkey
- word wrap
- groupby
- primarykey
- 입력
- 서브쿼리
Archives
- Today
- Total
재유's
[JAVA] 상속 (Inheritance)과 다형성(Polymorphism) 본문
상속성(Inheritance)
- 두 개의 클래스 간에 부모 자식관계를 형성
1 | public class 자식클래스 extends 부모클래스 { ... } |
- 부모클래스를 자식클래스가 상속받을 때, 자식은 부모의 모든 멤버변수와 메서드를 자신의 것으로 상속 받는다.
- (단, private로 설정된 기능은 상속되지 않는다.)
public |
protected |
private |
|
상속 가능 여부 |
O |
O |
X |
상속의 활용
- 기능의 확장
- 클래스 A가 B에게 상속된 경우 B는 A의 기능에 새로운 기능을 추가한 개념이 된다.
1 2 3 4 5 6 7 8 | public class A{ int a; int b; } public class B extends A { // <-- a, b에 c라는 기능을 추가 int c; } |
- 공통 기능의 모듈화
- 두 클래스 간에 공통되는 기능이 존재할 경우 그 기능을 별도의 클래스로 분리하여 상속처리
1 2 3 4 5 6 7 | public class Common{ int a; int b; } public class Hello extends Common{ ... } public class world extends Common{ ... } |
다형성 (Polymorphism)
- 오버라이드 (Override)
- 자식 클래스가 부모 클래스와 동일한 이름의 메서드를 정의한 경우 부모 클래스의 기능은 자식에게 가려진다.
- 즉, 부모의 기능을 재정의 한다. ( 기능의 변경 )
- 모든 자식클래스가 동일한 이름의 메서를 갖게 되므로 각 객체에 대하여
같은 메소드 명을 사용하여 서로 다른 형태를 구현할 수 있다.
1 2 3 4 5 6 7 8 9 | public class Parent{ public void foo(){...} public void bar(){...} } public class Child extends Parent { // child의 객체를 통해서 bar를 호출한 경우 부모의 기능은 사용되지 않는다. public void bar() {...} } |
- super 키워드
- 클래스의 상속관계에서 자식 클래스가 부모 클래스를 가리키는 예약어
=> 부모의 기능을 변경(오버라이드)하는 과정에서 부모의 원래 기능을 보전해야 할 필요가 있는 경우 사용
1 2 3 4 5 6 7 8 9 10 | public class Parent{ public void bar() { ...} } public class Child extends Parent { public void bar(){ super.bar(); // <-- 부모의 원본 기능을 의미 ... // <-- 부모의 기능을 확장하는 의미 } } |
- 상속관계의 생성자
- 생성자가 정의된 클래스를 상속받은경우(부모가 생성자를 갖는경우)에는 자식 클래스의 생성자를 통해서 부모 생성자를 강제로 호출해야 한다.
1 2 3 4 5 6 7 8 9 | public class Parent{ public Parent(int a) { ... } // <-- 부모 클래스 생성자 (기본생성자 x) } public class Child extends Parent { public Child(int a){ super(a); // <-- 부모의 생성자를 의미 } } |
'IT Story > Java' 카테고리의 다른 글
[JAVA] Inner Class & Anonymous class (0) | 2018.12.12 |
---|---|
[JAVA] For문 (반복문) (0) | 2018.12.11 |
[JAVA] 싱글톤 (SingleTon) (0) | 2018.12.11 |
[JAVA] Static (0) | 2018.12.11 |
[JAVA] 은닉성 (encapsulation) (0) | 2018.12.07 |
Comments