상속(Inheritance)
상속 목적 : 코드의 재사용성과 다형성을 위해서
상속의 종류 :
1. 클래스 상속
코드의 재사용성이 주목적
부모클래스의 메소드를 자식 클래스가 그대로 사용할 수 있다.
extends 라는 키워드를 통해서 이루어진다.
2. 인터페이스 상속
다형성이 주목적
부모 인터페이스의 메소드를 자식 클래스가 반드시 재정의(=오버라이드) 해야 한다.
implements 라는 키워드를 통해서 이루어진다.
Animal 부모 클래스
package day0113;
public class Animal {
public Animal(){
System.out.println("Animal() 호출");
}
public void move() {
System.out.println("동물이 움직입니다.");
}
public void eat(){
System.out.println("동물이 먹습니다.");
}
}
Animal 클래스 실행
package day0113;
public class Ex01Inheritance {
public static void main(String[] args) {
Animal animal = new Animal();
animal.move();
animal.eat();
}
}
Dog 자식 클래스 생성
package day0113;
public class Dog extends Animal {
public Dog(){
System.out.println("Dog() 호출");
}
public void makeSound(){
System.out.println("멍멍");
}
public void eat(){ // Override : 자식클래스가 부모클래스의 메소드를 재정의
System.out.println("강아지는 잡식동물입니다.");
}
}
Dog 자식 클래스 실행
package day0113;
public class Ex01Inheritance {
public static void main(String[] args) {
Animal animal = new Animal();
animal.move();
animal.eat();
// animal.makeSound()는 불가능 : 자식클래스의 메소드 사용 불가
Dog dog = new Dog(); // Animal 생성자가 한번 더 출력됨 : 부모 클래스에 자식클래스의 내용을 추가함
dog.move();
dog.eat();
dog.makeSound();
Animal a = new Dog(); // 부모클래스 객체는 자식클래스의 생성자로 초기화 가능
a.move();
a.eat();
// a.makeSound() 사용 불가 : 부모클래스 객체는 자식 클래스의 독자적 메소드 사용 불가능
// 다형성 부여
showSample(animal);
showSample(dog); // 부모클래스를 파라미터로 작성할 경우 자식클래스도 파라미터로 넣을 수 있다
showSample(a);
}
// 클래스 상속의 다형성에서의 사용
public static void showSample(Animal animal){
System.out.println("showSample()");
animal.eat();
}
}
'JX405기_비트 > Java' 카테고리의 다른 글
| Day05-3 Connection을 이용한 db연결 만들기 (0) | 2023.01.16 |
|---|---|
| Day05-2 인터페이스 상속 (0) | 2023.01.16 |
| Day04-4 로그인과 게시판 의존성DI 주입하기 (0) | 2023.01.16 |
| Day04-3 MVC 패턴을 활용하여 게시판 프로그램 만들기 (0) | 2023.01.16 |
| Day04-2 MVC 패턴을 활용하여 로그인 프로그램 만들기 (0) | 2023.01.16 |