개인공부/JAVA

9. 상속

j_yeaseul 2022. 5. 4. 22:59

1. 상속

1) 상속의 장점

 - 상속을 통해 기존클래스의 필드와 메소드를 재사용가능

 - 기존 클래스의 일부 변경도 가능

 - 상속을 이용하게 되면 복잡한  GUI프로그램을 쉽게 작성

 - 상속은 이미 작성된 검증된 소프트웨어를 재사용

 - 코드의 중복을 줄일 수 있다.

 - 기존의 클래스를 확장하여 새로운 클래스를 작성하는것(코드 재사용)

 - 두 클래스를 부모와 자식으로 관계를 맺어주는 것( extends 키워드 사용)

 - 자식은 부모의 모든 멤버(변수, 메소드)를 상속받는다. (private는 제외)

 - 한개의 클래스만 상속받을 수 있음(다중상속 금지)

 

 

 

2) is-a 관계

 - 상속관계가 있는 클래스들은 "자식클래스 is a 부모클래스"의 관계로 정의될 수 있음.

3) has a 관계(포함관계)

 : 한 클래스의 멤버로 다른 클래스를 선언해서 부품처럼 조립하여 사용하는 것.

 

 

4) Object 클래스

 : 자바의 최상위 클래스

 : 모든 클래스는 자동적으로 Object 클래스를 상속받게 된다.

 : 모든 클래스는 Object 클래스에 정의된 11개의 method를 상속받는다.

 

 

 

2. 오버라이딩

1) 오버라이딩의 정의 

 - 부모클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 적절하게 변경하는 것(재정의)

 - 메소드의 헤더(매개변수 갯수와 타입모두)는 동일하게 작성하고 내용만 변경시킴

 

 

3. super와 super()

1) super.

this - 현재 객체의 시작주소를 가리키는 변수

this. - 현재 클래스의 변수, 메소드 호출

super - 부모클래스의 멤버를 가리킴

super. - 부모클래스의 메소드,변수 호출에 사용

 

2) super()

: 부모클래스의 생성자를 호출할 경우 사용됨

: 자식클래스의 객체를 생성하면 자식의 멤버와 무보의 멤버가 합쳐진 하나의 객체가 생성되며 아래와 같은 순서로 진행됨.

  1. 부모클래스의 객체생성

  2. 부모클래스의 생성자 호출

  3. 자식클래스의 객체생성

  4. 자식클래스의 생성자 호출

: 부모클래스의 생성자와  private는 상속이 안됨

따라서 부모클래스의 멤버들도 초기화 되어야하기 때문에 자식클래스의 생성자 첫문장에서 부모클래스의 생성자를 호출해야 함 => super()

 - Scholar 클래스가 Student 클래스를 상속받아, 

매개변수가 포함된 생성자를 생성, 부모의 전역변수 초기화는 super(~)를 통해 초기화.

'개인공부 > JAVA' 카테고리의 다른 글

11. 추상화  (0) 2022.05.09
10. static, final, 다형성  (0) 2022.05.06
8. 생성자(Constructor)  (0) 2022.05.03
7. 클래스와 객체  (0) 2022.05.03
6. 메소드  (0) 2022.04.29