상속(IS-A 문법)
- 클래스 간 관계와 관련이 있음
- 코드 중복도 문제를 해결할 수 있음
- Super(): 부모 클래스 생성자를 call
- 모든 클래스는 Object 클래스를 상속하는 코드가 생략되어 있음(extends Object), 예외 X
다형성
- 변수 하나가 여러 자료형을 담는 형태
- 클래스 간 결합도(클래스끼리 의존도) 문제를 해결할 수 있음
- 편의성을 높이고, 모듈화에 용이함
- 부모 클래스가 여러 자료형의 하위 클래스를 담을 수 있음
- 상위 클래스의 참조 변수는 자신을 상속받는 하위 클래스 인스턴스의 주소를 저장할 수 있음 -> Up casting
- 이때, 부모 클래스는 자식 클래스 안에 있는 자신의 클래스 내용만 가짐, 즉, 부모 자료형 인스턴스만 인식
- 하위 인스턴스까지 인식하려면 Down casting을 해 줘야 함
- Down casting을 쓰지 않고도 하위 클래스의 인스턴스를 사용할 수 있는 방법
- Override
- implements
Method Overring
- 부모 클래스 메서드를 무효화시킴
- 상속 관계에서 쓰임, 메서드를 자식 클래스가 재정의함
Method implements
- 부모의 추상 클래스 메서드를 정의함
추상화
- 설계 목적의 클래스
- new가 안 됨, 즉, instance를 못 만듦
- abstract public method
- 설계 목적 코드
- 자식 클래스가 overriding 하는 것에 강제성을 줌
▽ 예제 코드 1 ▽
import java.util.Scanner;
// 모든 클래스는 extends Object 생략되어 있음, 예외 X
class A { // 부모 클래스
public void fucA() {
System.out.println("A");
}
}
class B extends A { // 자식 클래스
// overriding
public void fucA() {
System.out.println("overriding B");
}
public void fucB() {
System.out.println("B");
}
}
class C extends B {
}
class D extends C { // 다중 상속, 자동으로 부모의 부모 클래스까지 상속받음
}
public class Poly {
public static void main(String[] args) {
// 다형성: 변수 하나가 여러 자료형을 담는 형태
// 부모 클래스가 여러 자료형의 하위 클래스를 담을 수 있음
// 상위 클래스의 참조 변수는 자신을 상속받는 하위 클래스 인스턴스의 주소를 저장할 수 있음
// A를 상속받은 B 클래스 안에 있는 A 클래스의 내용만 가짐, 즉, A형 인스턴스만 인식
// 기본 자료형에서는 Promotion이라 하지만, 클래스에서는 Up casting이라고 함
A a = new B();
// a.fucB(); X
// down casting - B 인스턴스까지 인식
((B)a).fucA();
((B)a).fucB();
// down casting을 쓰지 않고도 하위 클래스의 인스턴스를 사용할 수 있는 방법
// 1. override
// 2. implements
a.fucA();
// 모든 클래스들은 자동으로 Object를 상속받음(최고도상)
C c= new C(); // 클래스 안에 내용이 없어도 가능
Object o1 = new Object();
Object o2 = new Scanner(System.in);
Object o3 = new A();
Object o4 = 10; // new Integer(10); 자동으로 변환됨 -> Auto Boxing 기본 자료형을 참조형으로 대입할 때 일어남
}
}
'자바 - Java > 이론' 카테고리의 다른 글
[Java] Java Programming - OJDBC(Oracle Java Database Connection) 개념 및 자바-DB 연결 용어 (0) | 2020.04.03 |
---|---|
[Java] Java Programming - 네트워크 프로그래밍, Server, Client, 프로토콜, Socket, Server Socket, Stream (0) | 2020.04.02 |
[Java] Java Programming - static 변수, static 메서드 (0) | 2020.04.02 |
[Java] Java Programming - 생성자(Constructor) (0) | 2020.04.02 |
[Java] Java Programming - 정보 은닉, 멤버 변수, 지역 변수 (0) | 2020.04.02 |