다형성-추상클래스

- 하나로 여러가지 일을 하는 것.


1.추상(Abstract)클래스


- 자바에서의 추상은 '완전하지 않다'라는 의미로 해석하면 된다.

- 추상클래스 : 추상메서드를 일부 포함하는 클래스.

- 추상메소드 : 몸체가 없는 메소드.


- 몸체가 없는 메소드를 추상메소드라고 하며 추상메소드를 하나 이상 포함하는 클래스는 추상 메소드이다.

- 추상 클래스는 extends를 이용해서 추상 메서드를 구현한다.

-예제)

Test.java
1
2
3
4
5
6
7
8
9
10
public abstract class Test {
       public void a1(){
        //멤버 메소드.
        System.out.println("a1");
    }
       public abstract void a2();
//추상메소드. {}괄호가 없이 ;로 끝난다.
//즉 몸체가 없다.
}
 


Test1.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class test1 {
    public static void main(String args[]){
        new test2().a1();
        new test2().a2();
    }
    
}
class test2 extends Test{
 
    @Override
    public void a2() {
        System.out.println("a2");        
    }
    
}
 


결과 

a1

a2


- 추상클래스는 절대 직접적으로 객체 생성이 불가능 하다. 완전하지 못한 추상메소드가 존재하기 때문이다.

  추상클래스를 사용하기 위해서는 클래스에서 추상클래스를 상속 받아 추상메소드를 오버라이딩하여 완성 시켜야 한다.


- 추상클래스를 상속받은 하위 클래스에서 추상메소드를 오버라이딩 하지 않으면 하위 클래스도 추상클래스가 된다.


- 추상메소드를 가지지 않는 추상클래스가 존재 할 수도 있다

이 경우는 상속을 받기만 하면 완전한 클래스가 되기때문에 따로 오버라이딩 하지 않아도 객체 생성이 가능하다.



댓글()