[Java/기초] 상속JAVA/JAVA 기초2024. 1. 14. 00:14
Table of Contents
728x90
반응형
상속이란 객체 지향 프로그래밍의 중요한 개념이다. 코드의 재 사용성을 높이고, 계층 구조를 통해 클래스 간의 관계를 정의하는데 사용한다. 이때 extends를 사용해서 상속 관계를 설정한다.
1. 상속의 특징
class 부모클래스 {
// 부모 클래스의 멤버들
}
class 자식클래스 extends 부모클래스 {
// 자식 클래스의 멤버들
}
- 이런식으로 작성하면 자식 클래스에서 부모클래스의 method, 변수 들을 사용,확장할 수 있다.
- 자식은 상속받은 매서드 이외에 다른 매소드 변수들을 추가할 수 있다.
- 부모의 매서드를 같은 시그니처로 정의하는 것을 매서드 오버라이딩이라고 한다.
2. Super와 This
class Animal {
String name;
Animal(String name) {
this.name = name;
}
void eat() {
System.out.println("Animal is eating.");
}
}
class Dog extends Animal {
String breed;
Dog(String name, String breed) {
super(name); // 부모 클래스의 생성자 호출
this.breed = breed;
}
@Override
void eat() {
super.eat(); // 부모 클래스의 eat 메서드 호출
System.out.println("Dog is eating bones.");
}
super.eat() //오버라이드된 eat이 아닌 부모클래스의 eat을 호출
}
- super는 부모클래스의 생성자를 호출하거나, 매서드를 오버 라이딩 할때 사용한다.
- 자식의 메소드를 사용하지 않고 부모의 메소드를 사용한다.
class Person {
String name;
Person(String name) {
this.name = name; // 인스턴스 변수와 매개변수 이름이 같을 때 this 키워드 사용
}
}
- this는 꼭 사용하지 않아도 되지만 명확성과 가독성을 높이기 위해서 사용된다.
3. Final
public final class 부모클래스1 {
// 부모 클래스의 멤버들
}
class 자식클래스1 extends 부모클래스1 { //final선언이라 불가
// 자식 클래스의 멤버들
}
public final class 부모클래스2 {
public final void 메소드2{...}
}
class 자식클래스2 extends 부모클래스2 {
@override //오버라이딩 할 수 없음
public void 메소드2{...}
}
- final이 들어간 클래스는 자식 클래스를 만들수 없다.
- final이 들어간 메소드는 Override할수 없다.
4. Promotion
class Aniaml{
...
}
class cat extends Animal{
...
}
- 이런 상속 관계가 있다고 할때
Cat cat = new Cat();
Animal animal = cat;
- Cat클래스로부터 cat변수를 만들었을때 이것을 Animal클래스로 만든 변수에 대입하면 자동으로 타입이 변환된다.
cat은 Animal이 된다.
728x90
반응형
'JAVA > JAVA 기초' 카테고리의 다른 글
[Java/기초] Getter Setter (0) | 2024.02.13 |
---|---|
[Java/기초] Interface (0) | 2024.01.14 |
[JAVA/기초] 간단한 객체지향 인스턴스 OPP (1) | 2023.12.22 |
[JAVA/기초] 반복문 (0) | 2023.12.22 |
[JAVA/기초] 조건문 (0) | 2023.12.22 |
@코딩하는 자연대생 :: 자연대생도 코딩을 하고 싶어
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간