추상클래스, 인터페이스

신형주·2023년 4월 27일
0

추상클래스 기초

public abstract class AbstractClassStudy1 {
	// 추상 메소드가 있는 순간 클래스에 추상붙이기 필수
    // 객체화 막으려고 쓰기도 함
    // 무조건 부모역할을 할때 쓴다 = 무조건 자식클래스가 있다

    int multi(int n1, int n2) {  // 추상 클래스는 일반 메소드도 가질 수 있다.
        return n1 * n2;
    }

    abstract void sum(int n1, int n2);  // 선언부만 있는 메소드, 추상 메소드는 메모리에 안올라감

}

class ChildClass extends AbstractClassStudy1 {
    @Override
    void sum(int n1, int n2) {
    // 추상 클래스에 있는 추상메소드는
    // 자식클래스에 무조건 구현해야한다. = 오버라이딩 필수
        System.out.println("합계 : " + (n1 + n2));
    }
}

class Child2Class extends  AbstractClassStudy1 {
    @Override
    void sum(int n1, int n2) {
        System.out.println("sum : " + (n1 + n2));
    }
}

인터페이스 기초

//무조건 추상 메소드만 줄 수 있기 때문에 굳이 메소드에 abstract 안적어도 된다.
//메소드 앞에 public abstract 자동으로 숨겨져서 붙기때문에 안붙여도 된다.
//추상클래스처럼 상속한 자식클래스에 무조건 인터페이스 안의 같은 메소드가 있어야 한다.
//인터페이스는 다중 상속이 된다. => implements name1, name2 ....
//상속한 클래스들의 규격 같은 개념

public interface Fightable {    //작명 ~able
    void sum(int x, int y);
    void move(int x, int y);
}
profile
코린이. 주니어 개발자

0개의 댓글