추상클래스 기초
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);
}