: abstract method가 단 1개라도 class 내부에 존재하면 된다.
이 class로부터는 instance를 생성할 수 없다. 상속할 때 상위 class로 사용된다. 기능의 이름은 같은데 세부 구현이 다를 때 사용한다.
abstract method
: method의 선언만 존재하고, 정의가 없다. method가 하는 일이 정해지지 않았다. 추상메소드이면 abstract 키워드를 꼭 붙여야 한다.public abstract void printAll(); // abstract method
package lecture0712;
// 추상 클래스(abstract class)
public abstract class UpperClass {
// field
String name;
int age;
// method
public abstract void printAll(); // abstract method
}
class SubClass extends UpperClass {
@Override
public void printAll() {
}
}
추상 class의 아주 특별한 형태
: class 안의 모든 method가 추상 method로 구성되어 있다. 모든 field는 public static final로 구성되어 있다.
interface는 다중 구현이 가능하다.
is-a relationship이 성립한다.
package lecture0712;
interface myInterface {
// fields
// public static final
int kk = 0;
String aa = "Hello";
// method
public abstract void printAll();
public abstract void myPrint();
}
public class MyClass implements myInterface{
@Override
public void printAll() {
// TODO Auto-generated method stub
}
@Override
public void myPrint() {
// TODO Auto-generated method stub
}
}
package lecture0713;
class Human {
}
interface MyInterface {
}
interface Animal {
int weight = 10;
public static final int age = 20;
// abstract keyword 생략 가능하다.
public void printName();
public abstract void printAge();
}
class MyClass extends Human implements Animal, MyInterface{
@Override
public void printName() {
}
@Override
public void printAge() {
}
}
public class Main {
}