티스토리 뷰

Java

자바의 신 10장 ~ 11장

아나니리 2020. 3. 22. 21:09

10장 상속

extends 예약어를 사용해서 상속을 받을 수 있다.

public class Parent {
    public Parent() {
         System.out.println("parent 생성자");
     }

    public void printName() {
         System.out.println("parent printName()");
     }
}

public class Child extends Parent {
    public Child() {
        System.out.println("child 생성자");
    }
}

Parent를 상속받은 Child 클래스는 printName 메소드를 사용할 수 있다.

Child child = new Child();
child.printName();

Child 클래스가 생성될 때 Parent 클래스의 생성자도 같이 호출된다.

parent 생성자
child 생성자
parent printName()

Child 클래스가 생성될 때 Parent 클래스의 생성자가 호출되는 이유는 super()라는 문장이 컴파일될 때 추가되기 때문이다.
super()는 상속받은 클래스의 기본생성자를 호출하는 문장이다. 기본 생성자가 없다면 상속 클래스의 생성자에 따라서 다르게 호출해야 한다.

메소드 overriding

상속받은 클래스의 메소드와 같은 일을 하는 메소드이지만 자식 클래스에서 조금 다르게 사용하기 위해서는 메소드 overriding을 사용한다.

  • 부모 클래스와 동일한 메소드 이름, 매개변수, 리턴 타입일 때 overriding이 성립된다.

  • overriding 된 메소드의 접근제어자는 overriding 하는 메소드보다 접근 권한이 크거나 같아야 한다.

상속과 형변환

자식 클래스는 부모 클래스로 형 변환이 가능하다.

Parent child = new Child();
child.printName();

범위가 작은 int에서 범위가 큰 long으로 형 변환할 때 (long) 명시적으로 적을 필요없는 것처럼 child를 parent로 형변환할 때도 적지 않고 형 변환이 가능하다. parent에서 child로 형 변환하려면 명시적으로 (Child)를 적어야 한다.

Polymorphism(다형성)

형 변환을 하더라도 원래 객체에 있는 메소드가 호출된다. (다양한 형태의 객체를 관리하기 쉬워진다.)

11장 API (Application Programming Interface)

소스 내에 클래스 및 메소드에 api에 명시되도록 주석을 상세하게 달고 javadoc 프로그램(jdk/bin에 위치)을 실행시키면 내 코드의 api도 만들어 준다.

deprecated

이제는 사용하지 않는 것들, 사용하지 않는다고 해서 바로 지우면 자바 버전 간에 호환이 되지 않기 때문에 일단 지우지 않고 경고를 한다.

'Java' 카테고리의 다른 글

자바의 신 12장 ~ 13장  (0) 2020.03.22
자바의 신 8장 ~ 9장  (0) 2020.03.11
자바의 신 7장  (0) 2020.03.02
자바의 신 5장 ~ 6 장  (0) 2020.02.23
자바의 신 1장 ~ 4장  (0) 2020.02.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함