상속(IS-A 문법)

  • 클래스 간 관계와 관련이 있음
  • 코드 중복도 문제를 해결할 수 있음
  • Super(): 부모 클래스 생성자를 call
  • 모든 클래스는 Object 클래스를 상속하는 코드가 생략되어 있음(extends Object), 예외 X

 

 

다형성

  • 변수 하나가 여러 자료형을 담는 형태
  • 클래스 간 결합도(클래스끼리 의존도) 문제를 해결할 수 있음
  • 편의성을 높이고, 모듈화에 용이함
  • 부모 클래스가 여러 자료형의 하위 클래스를 담을 수 있음
  • 상위 클래스의 참조 변수는 자신을 상속받는 하위 클래스 인스턴스의 주소를 저장할 수 있음 -> Up casting
  • 이때, 부모 클래스는 자식 클래스 안에 있는 자신의 클래스 내용만 가짐, 즉, 부모 자료형 인스턴스만 인식
  • 하위 인스턴스까지 인식하려면 Down casting을 해 줘야 함
  • Down casting을 쓰지 않고도 하위 클래스의 인스턴스를 사용할 수 있는 방법
    1. Override
    2. implements

 

 

Method Overring

  • 부모 클래스 메서드를 무효화시킴
  • 상속 관계에서 쓰임, 메서드를 자식 클래스가 재정의함

 

Method implements

  • 부모의 추상 클래스 메서드를 정의함

 

 

추상화

  • 설계 목적의 클래스
  • new가 안 됨, 즉, instance를 못 만듦
  • abstract public method
    1. 설계 목적 코드
    2. 자식 클래스가 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 기본 자료형을 참조형으로 대입할 때 일어남
		
	}

}

 

 

+ Recent posts