상속(Inherit)
1. 상속 : 다른 클래스가 가지고 있는 필드, 메소드 들을 새로 작성할 클래스에서 직접 만들지 않고 상속받음으로써 새 클래스가 자신의 멤버처럼 사용 할 수 있게 하는 기능
=> 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것.
2. 상속의 장점
1) 코드의 재사용성이 높아진다.
2) 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다.
3. 상속의 특징
1) 모든 클래스는 Object클래스의 후손
2) 부모클래스의 생성자, 초기화 블록은 상속되지 않는다.
3) 부모의 private멤버는 상속은 되지만 직접 접근은 불가능
4. 상속 방법 : extends 사용
5. 표현식
: [접근제한자] class 클래스명 extends 클래스명 {}
package com.inherit.model.vo;
public class Person {
private String name;
private int age;
private String gender;
private String personNo;
public Person() {}
public Person(String name, int age, String gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}
public Person(String name, int age, String gedner, String personNo) {
super();
this.name = name;
this.age = age;
this.gender = gedner;
this.personNo = personNo;
}
package com.inherit.model.vo;
import java.util.Objects;
public class Student extends Person { // Student클래스가 Person클래스를 상속받는다
// private String name;
// private int age;
// private char gender;
private int grade;
private String major;
public Student() {}
6. super()와 super.
1) super() : 부모 생성자를 호출하는 메소드.
2) super. : 상속을 통한 자식 클래스 정의 시 해당 자식클래스의 부모 객체를 가리키는 참조변수
7. 오버라이딩(overriding)
1) 부모클래스로부터 상속받은 메소드의 내용을 변경하는 것.
2) 상속받은 메소드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야 할 경우에 사용
3) 메소드 헤드라인 위에 반드시 @Override 표시
4) 성립 조건
: 부모클래스 메소드와 자식클래스 메소드를 비교했을 때, ① 메소드 이름 ② 매개변수 개수와 타입 ③ 리턴 타입이 동일해야한다.
8. 오버라이딩 vs 오버로딩
오버라이딩(Overriding) | 오버로딩(Overloading) |
하위 클래스에서 메소드 정의 | 같은 클래스에서 메소드 정의 |
메소드 이름 동일 매개변수 동일(개수, 타입) 리턴 타입 동일 |
메소드 이름 동일 매개변수 다름(개수, 타입) 리턴 타입 상관 X |
자식 메소드의 접근 범위가 부모메소드의 접근 범위보다 넓거나 같아야함 |
접근 제어자와 상관 X |
자식 메소드의 예외수가 부모 메소드의 예외 수보다 적거나 범위가 좁아야 함 |
예외처리와 상관 X |
'Java' 카테고리의 다른 글
추상(Abstract) (0) | 2021.10.05 |
---|---|
다형성(polymorphism) (0) | 2021.09.30 |
객체, 클래스 (0) | 2021.09.23 |
형변환(Casting) (0) | 2021.09.23 |
배열(Array) (0) | 2021.09.16 |