코딩은 실력보다 시력이지

빅데이터교육과정/JAVA

DAY 6. 상속(is~A) / Override

Listeria 2021. 2. 4. 22:55

 Is~ A
   
  is like a 관계를 가지면 안된다 (마치 ~와 같다 xx)
   
  상속 (extends)
  자바는 100프로 상속관계
  자바는 객체끼리는 단일 상속만을 지원한다.(명확성)
   
  Super class의 private member는 직접 접근할 수 없다.(캡슐화 파괴 방지)
 
  Super() : super call
   : super class 의 생성자를 호출
   : sub class 생성자 함수의 첫번째 라인에 항상 존재한다. 다만 보이지 않을뿐..
   : super class의 default constructor 가 아닌 오버로딩 된 constructor 를 호출하기 위해서 명시적으로 super() 를 사용
 
 
 
  오버라이딩
   1. Super class에 있는 메소드를 sub class에서 똑같이 제공하는 것
   2. 목적
    1) 부모의 메소드를 재정의
    2) 부모의 메소드를 확장
    3) 동적 바인딩 -> 가장 중요한 이유, 다형성

 

class A{
	public A() {
		// super() 생략됨
		System.out.println("Super");
	}
	public A(int a) {
		System.out.println(a);
	}
}



public class IsA extends A {//extends Object {

	public IsA() {
		super(10);
		System.out.println("Sub");
	}
	
	public static void main(String[] args) {
		
		IsA is = new IsA();
		
		
	}
}

상속 예시

 

public class AA {
	private int a;
	public AA() {
		
	}
	public AA(int a) {
		this.a = a;
	}
	protected int getA() {
		return a;
	}
}


public class BB extends AA{
	private int b;

	public BB() {
		
	}
	public BB(int a, int b) {
		super(a);
		this.b = b;
	}
	
	protected int getA() {

		return super.getA();
	}
	
	protected int getB() {
		return b;
	}
}



public class CC extends BB {
	private int c;
	
	public CC(int a,int b, int c) {
		super(a,b);
		this.c = c;
	}
	
	public int getC() {
		return c;
	}
	public int getB() {
		return super.getB();
	}
	public int getA() {
		return super.getA();
	}
	public static void main(String[] args) {
		
		CC c = new CC(1,2,3);
		
		System.out.println(c.getA());	//1
		System.out.println(c.getB());	//2
		System.out.println(c.getC());	//3

	}

}

 

상속의 예시2. AA, BB, CC를 각기 다른 class로 만들어서 실행하여도 작동한다.

super.xxx는 상위 클래스의 객체를 호출할 수 있다.

 

class Over {
	public void disp() {
		System.out.println("over");
	}
}


public class Override extends Over{

	//override
	public void disp() {
		System.out.println("over1");
	}
	
	public static void main (String[] args) {
		Override over = new Override();
		over.disp();
	}
}

 

오버라이드의 예시. 상속받은 class 와 동일한 이름의 method가 있어도 동일한 class에 있는 method를 우선시 하여 호출한다.

'빅데이터교육과정 > JAVA' 카테고리의 다른 글

DAY 8. interface와 추상클래스  (0) 2021.02.16
급여 관리 프로그램  (0) 2021.02.12
DAY 5. Class : has~ a 응용  (0) 2021.02.04
DAY 5. Class : has~a  (0) 2021.02.04
DAY4. Class.  (0) 2021.02.02