abstract class A {
//class A {
//void Sub();
/*
sub()함수는 이class에서 하는 역할은 없고
A class에서 상속되는 하위class에서 반드시 재정의 시켜서
사용할 것을 의무화하기위한 목적만을 갖고 있다.
*/
abstract void Sub();
//이럴때 추상적 매소드를 만들어지는데, 함수머릿부앞에 abstract
//추상적인 매소드는 구현해서는 안된다. "{}"조차 사용할 수 없다.
//추상적인 매소드 뒤에는 그냥 ";"로 끝난다.
//추상적인 매소드 뒤에는 반드시 추상적인 class가 되야하므로 ->abstract class A {로 해야한다
//이것을 추상적인 매소드라고 한다.
void Sub1(){ //일반맴버함수 : 모두다 추상적인 매소드가 올 필요는 없다.
System.out.println("A클래스");
}
}
class B extends A{
void Sub(){ //추상적인 class 재정의 -> 쓸게 없더라도 void Sub(){}정도는 정의해줘야한다.
//추상적인class로부터 상속되는 class앞에 추상적인 매소드를 재정의하지않으면 상속되는 클래스도
//자동적으로 추상적인 클래스가 되므로 클래스 예약어 앞에 abstract라는 예약어를 기재해야한다.
//참조변수는 정의가 가능하나 new연산자로 객체정의는 불가능
System.out.println("B재정의");
}
}
public class Abstract01 {
public static void main(String[] args) {
A a1;
//a1=new A(); // 추상적인 class는 참조변수 정의는 가능하나
// new연산자로 객체정의는 불가.
B b1;
b1 =new B();
}
}
'새로워지기 > 서른의 생활코딩' 카테고리의 다른 글
ex16) java_oop (0) | 2012.02.22 |
---|---|
ex15) java_oop (0) | 2012.02.21 |
ex13) java_oop (0) | 2012.02.21 |
ex12) java_oop (0) | 2012.02.21 |
ex11) java_oop (0) | 2012.02.21 |
댓글