728x90
2023.01.13 - [JAVA/Java 기초] - 메소드 재정의.jav
메소드 재정의.jav
2023.01.12 - [JAVA/Java 기초] - 오버라이딩(overriding).java 오버라이딩(overriding).java 2023.01.12 - [JAVA/Java 기초] - 상속.java 상속.java 2023.01.11 - [JAVA/Java 기초] - 싱글톤 패턴.java 싱글톤 패턴.java 2023.01.11 - [JAVA/J
less-go.tistory.com
이어지는 내용입니다.
추상 클래스 : 자식 클래스에서 사용할 기능의 틀을 만들어 놓은것입니다.
추상클래스 == 부모클래스 :
- 추상클래스에서 틀을 생성, 자식 클래스에서 기능에 대한 구체적인 기능을 구현합니다.
- new 연산자를 통해 객체를 직접 만들지 못하고 상속을 통해서 자식클래스만 만들수 있습니다.
abstract 선언을 해서 추상클래스를 선언합니다.
필드와 메소드를 선언해줍니다.
- 하나 이상의 추상 메소드가 있어야 합니다.
- 메소드에 abstract 선언 해서 추상메소드() 선언을 해줍니다.

추상 메소드와 재정의
- 자식 클래스들이 가지고 있는 공통 메소드를 뽑아내어 추상 클래스로 작성할때, 메소드 선언부만 동일 하고 실행 내용은 자식 클래스 마다 달라야 하는 경우 추상메소드를 선언 할수 있습니다.
- 일반 메소드 선언과 차이점은 abstract 키워드가 붙고, 메소드 실행 내용인 중괄호가 없습니다.

예제입니다.
package java230116;
//부모클래스 : Animal
public abstract class Animal { // abstract 키워드 붙혀서 추상 클래스
public void breathe() {
System.out.println("숨을 쉽니다.");
}
public abstract void sound();
//추상 메소드 선언 : 사운드라는 기능을 자식클래스에서 반드시 구현해야 합니다.
}
//자식클래스 : Dog
public class Dog extends Animal{
@Override //부모의 추상 메소드를 오버라이딩을 통해 자식클래스에서 구체적으로 구현
public void sound() {
System.out.println("멍멍");
}
}
//자식 클래스 : Cat
public class Cat extends Animal{
@Override
public void sound() {
System.out.println("야옹");
}
}
//실행부
public class AbstractMethodExample {
public static void main(String[] args) {
Dog d = new Dog();
d.sound();
Cat c = new Cat();
c.sound();
//다형성
animalSound(new Dog());
animalSound(new Cat());
}
public static void animalSound(Animal animal) {
animal.sound();
}
}
sealed 클래스 :
- java 15 부터 무분별한 자식클래스 생성을 방지하기 위해 봉인된 클래스가 도입 됬습니다.
- sealed 키워드를 사용하면 permits 키워드 뒤에 상속 가능한 자식클래스를 지정합니다.
- final은 더이상 상속할수 없다는 뜻이고, non-saealded는 봉인을 해제 한다는 뜻입니다.
public sealed class Person permits, Employee, Manger{...}
public final class Employee extends Person{...}
public non-sealed class Manager extends Person{...}
728x90
'JAVA > Java 기초' 카테고리의 다른 글
| 컬렉션자료구조2.java (0) | 2023.01.26 |
|---|---|
| 인터페이스(Interface).java (0) | 2023.01.16 |
| 메소드 재정의.jav (0) | 2023.01.13 |
| 오버라이딩(overriding).java (0) | 2023.01.12 |
| 클래스와 인스턴스 등...(리마인드용) (0) | 2023.01.12 |