//추상 메서드: 내용이 없는 메서드🤣👌
//추상 클래스: 추상 메서드를 하나라도 가진 클래스
package g_oop2;
public abstract class SampleAbstractParent {//abstract추가해야 컴파일 에러 발생 안함
void method(){//메서드 선언
System.out.println("내용");//메서드 구현
}
//추상 메서드: 선언부만 있고 구현부가 없는 메서드
abstract void abstractMethod();
//내용이 없어서 실행 불가 - 객체 생성이 안되고 부모 클래스로만 사용함
//부모클래스는 클래스를 여러개 만들때 똑같은 내용과 메서드가 있을때 만듬
}
class SampleAbstractChild extends SampleAbstractParent{
//추상메서드를 상속받았을때 에러가 발생하므로 추상클래스의 내용을 만들어 줘야 함
@Override //추상메서드를 오버라이딩하여 내용이 생김
void abstractMethod() {
System.out.println("내용");
// 추상메서드를 만드는 이유: 자식클래스 간에 똑같은 내용이 있지만 조금씩 다를때 사용
/ 반드시 내용을 쓰게 함 아니면 컴파일 에러가 발생하게 됨
}
}
소리 나는 추상 메서드 만들기
package g_oop2;
public abstract class Animal {
//소리를 내는 메서드를 추상 메서드로 만듬
abstract void sound();
}
// 상속받을 자식 클래스(추상메서드)
class Dog extends Animal {
@Override//자식 클래스에게 반드시 이것과 똑같이 만들으라 강제성을 부여하는 것
void sound() {
System.out.println("멍멍!");
}
}
class Cat extends Animal{
@Override
void sound() {
System.out.println("냐옹");
}
}
class Pig extends Animal{
@Override
void sound() {
System.out.println("꿀꿀");
}
}