☕ 상속 개념
: 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있다. 부모 클래스를 상위 클래스라 부르기도 하고, 자식 클래스를 하위 클래스 또는 파생 클래스라 부른다.
🥨 상속 장점
1. 코드의 중복을 줄여준다
2. 효율적이고 개발 시간을 절약시켜준다
3. 클래스의 수정을 최소화시킨다.
4. 유지 보수 시간을 최소화 시켜준다.
☕ 클래스 상속
: 프로그램에서는 자식이 부모를 선택한다. 어떤 부모 클래스를 상속 받을 것인지 결정하고 부모 클래스는 다음과 같이 extends 뒤에 기술한다.
Class 자식클래스 extends 부모클래스 {
// 필드
// 생성자
// 메소드
}
Class SportsCar extends Car {
}
🥨 다른 언어와 달리 자바는 다중 상속을 허용하지 않는다.
☕ 부모 생성자 호출
: 모든 객체는 클래스의 생성자를 호출해야하만 생성된다. super()는 부모의 기본 생성자를 호출한다.
public Dmb(){
super();
}
자식 클래스 (매개변수 선언, ... ){
super(매개값, ... );
....
}
🥨 부모 생성자 클래스 호출 예제
// People.java 부모 클래스
public class People{
public String name;
public String ssn;
Public People(String name, String ssn){
this.name = name;
this.ssn = ssn;
}
}
// Student.java 자식 클래스
public class Student extends People{
public int studentNo;
public Student(String name, String ssnm int studentsNo){
super(name, ssn);
this.studentNo = studentNo;
}
}
public ckass StudentExample{
public static void main(String[] args)
Studnet student = new Studtent("홍길동", "12345-7890", 1);
System.out.println("name :" + student.name);
System.out.println("ssn :" + student.ssn);
System.out.println("studentNo : " student.studentNo );
}
}
☕ 메소드 재정의(오버라이딩)
: 어떤 메소드는 자식 클래스가 사용하기에 적합하지 않을 수도 있다. 이 경우 상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 한다. 자바는 이런 경우를 위해 메소드 오보라이딩 기능을 제공한다.
🥨 메소드 재정의
: 상속된 메소드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의 하는 것을 말한다. 부모 객체의 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 오버라이딩 된 자식 메소드가 호출된다.
🥨 메소드 오버라이딩 규칙
- 부모의 메소드와 동일한 시그니처(리턴 타입, 메소드 이름, 매개 변수 리스트)를 가져야 한다
- 접근 제한을 더 강하게 오버라이딩 할 수 없다
- 새로운 예외를 throws 할 수 없다
☕ final 클래스와 final 메소드
🥨 상속할 수 없는 final 클래스
: final 클래스는 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없다는 것이다.
public final class 클래스 {...}
// 상속 할 수 없는 final 클래스
public final class Member{
}
🥨 오버라이딩 할 수 없는 final 메소드
: 부모 클래스에 선언된 final 메소드는 자식 클래스에서 재정의 할 수 없다는 것이다.
☕ protected 접근 제한자
: 접근 제한자는 public, protected, default, private 네 종류가 있다.
☕ 타입 변환과 다형성
: 다형성은 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 다양한 기능을 이용할 수 있도록 해준다. 자바는 부모 클래스로 타입 변환을 허용한다. 즉, 부모 타입에 모든 자식 객체가 대입될 수 있다. 이것을 이용하면 객체는 부품화가 가능하다.
🥨 자동 타입 변환
: 자동적으로 타입 변환이 일어나는 것을 말한다. 자식은 부모의 특징과 기능을 상속 받기 때문에 부모와 동일하게 취급 될 수 있다.
🥨 매개 변수의 다형성
: 자동 타입 변환은 필드의 값을 대입할 때에도 발생하지만, 주로 메소드를 호출 할 때 많이 발생한다. 메소드를 호출할 때 에는 매개 변수의 타입과 동일한 매개값을 지정하는 것이 정석이지만, 매개값을 다양화 하기 위해 매개 변수에 자식 타입 객체를 지정할 수도 있다.
☕ 추상클래스
🥨 추상 클래스의 개념
: 추상은 실체 간에 공통되는 특성을 추출한 것을 말한다. 구체적인 실체라기보다는 실체들의 공통되는 특성을 가지고 있는 것을 추상적인 것이라고 한다. 클래스에서도 추상 클래스가 존재한다. 이 클래스들을 공통적인 특성을 추출해서 선언한 클래스를 추상클래스라고 한다.
🥨 추상 클래스의 용도
1. 실체 클래스들의 공통된 필드와 메소드 이름을 통일할 목적
2. 실체 클래스를 작성할 때 시간을 절약
🥨 추상 클래스 선언
public abstract class 클래스 {
// 필드
// 생성자
// 메소드
}
'개발&etc > JAVA' 카테고리의 다른 글
[Java] 이것이 자바다 - #인터스페이스 (0) | 2023.04.25 |
---|---|
[Java] 이것이 자바다 - #클래스 (0) | 2023.04.21 |
[Java] 이것이 자바다 - #참조타입 (0) | 2023.04.12 |
[Java] 이것이 자바다 - #연산자 (0) | 2023.04.12 |
[Java] 이것이 자바다 - #변수 (0) | 2023.04.10 |