IT/JAVA

추상 클래스

So1_b 2022. 1. 25. 20:01

오늘 배운 점

추상 클래스 ( abstract class)란?

[접근 제한] abstract class [클래스 명] { }

- 미완성 메소드를 가지고 있는 클래스 

  여기서 미완성 메소드란 몸통{ }이 없는 형태. 이것은 추상 메소드라고 함.

    [접근 제한] abstract 리턴형 메서드 명 ();

 

- 미완성 클래스라 인스턴스 생성 불가능. 하지만 추상클래스 형 배열은 만들 수 있음 

 

- 상속을 통해 미완성 메소드를 자손에서 오버라이딩하여 구현해줘야 한다. 

  조상의 추상 메소드를 다 구현하지 않았다! > 반드시 클래스에 abstract 키워드 붙여야 함.

  오버라이딩 할 때 메소드 앞에 abstract 키워드 쓰면 안됨. 

    * 이클립스에서 [Source] - override/Implement Method... 탭에서 오버라이딩 할 메소드를 선택 후 [OK] 클릭

 


추상 클래스에 들어갈 수 있는 멤버 종류

 반드시 하나 이상의 추상 메서드를 가져야 하고 인스턴스 메소드, 인스턴스 변수, static 메소드와 변수, 지역 변수, 상수를 가질 수 있다.

 

 * 주의

    추상 메소드를 만들때 static 메소드는 불가능! 인스턴스 메소드만 가능!!

    static은 객체를 생성하지 않아도 static영역에 존재해 모든 인스턴스들이 자유롭게 사용이 가능하다는 특징을 

    가지고 있음. 근데 추상 클래스는 선언부만 있고 구현부가 생략된 형태로 인스턴스로 존재할 수 없기 때문에 static 메소드는 사용할 수 없다.

 


언제 사용할까? 

  여러 클래스에 공통적으로 사용될 수 있는 추상 클래스를 바로 작성하거나 기존 클래스의공통 부분을 뽑아 

  추상 클래스를 만든다. 

 


팁! 

object 형으로 참조변수를 생성하면 object클래스가 모든 클래스의 최고 조상이라서 그 참조변수는 모든 인스턴스를 

담을 수 있다. 단 메서드 사용시 참조변수에 있는 멤버만 인스턴스에서 활성화되기 때문에 사용하려는 기능이 참조변수 타입에 있는지 확인해야 함. 

 

참고 사이트