수제녹차 2019. 9. 3. 23:43
728x90
반응형

출처 : 자바 프로그래밍 입문(인프런)

- 필요성

기존의 검증된 class를 이용해서 빠르고 쉽게 새로운 class를 만들 수 있다.

ex. extends를 이용해서 상속한다

package testPjt;

public class ChildClass extends ParentClass{
	public ChildClass() {
    	System.out.println("-- ChildClass constructor --");
    }
    
    public childFun() {
    	System.out.println(" -- childFunc() --");
    }
}
package testPjt;

public class ParentClass {
	public ParentClass() {
    	System.out.println("--- ParentClass Constructor ---")
    }
    public void parentFun() {
    	System.out.println("--- parentFunc ---")
    }
}

ChildClass child = new ChildClass(); -> ParentClass의 객체먼저 생긴다. 부모 클래스가 먼저 있어야 상속 받을 수 있어.

child.parentFun();

child.childFun();

 

- 특징

1) 자바는 단일 상속만 가능, 다중 상속은 지원하지 않는다.

2) 자식 클래스는 부모 클래스의 모든 자원을 사용할 수 있지만 private 접근자의 속성과 메서드는 사용할 수 없다.

 

- 메서드 오버라이드

부모 클래스의 기능을 자식 클래스에서 재정의해서 사용한다. 

기존 클래스를 확장, 업데이트 할 수 있다.

@override 위에 써주고 쓴다.

 

- 클래스도 하나의 자료형이다.

클래스의 이름은 데이터 타입으로도 이용된다.

Childclass child = new ChildClass(); 뿐만 아니라

ParentClass child = new ChildClass()라고 만들어도 된다.

상위 클래스 데이터 타입이어도 된다. childClass는 상위 클래스를 상속받은 것이기 때문.

 

배열의 요소는 객체 타입이 다 동일해야 한다.

이때, 부모 클래스로 데이터 타입을 만들면(new할 때는 각각 다른 자식 클래스여도) 같은 배열 안에 넣을 수 있다. 

모든 클래스의 최상위 클래스는 Object Class, ObjectList class가 있다.

데이터 타입을 모두 Object로 통일시키면 배열에 넣을 수 있다.

this : 현재 내가 있는 객체

super : 상위 클래스로 올라가라

ChildClass 내에서 this.속성, super.속성으로 각각의 속성을 가리킬 수 있다.

 

반응형