☕ 자바 JAVA/☕ 클래스와 함수 Class & Method

[JAVA]추상 클래스 abstract class

뉴이 NUEY 2024. 4. 9. 04:44
반응형
미완성 설계도.
미완성 method(=추상 method)를 갖고 있는 class.

abstract class 형태

  • class명 앞에 abstract가 붙는다(class 만들 때 abstract class로 생성).
  • 추상method 앞에도 abstract가 붙는다.
    구현부 { } 가 없다.
  • 구현부가 없어 미완성이자 추상이라고 하는 것.

생성하는 법


 

abstract class는 instance 생성불가

abstract class로 new instance 만들면 error뜸. 다른 class 작성에 도움을 주기 위한 거라 애초에 instance가 생성 안됨.


 

상속extebds를 통해 추상 method를 완성해야
상속된 class로 instance 생성가능

AudioPlayer에 상속

  • 이 때는 추상이 아니기 때문에 abstract가 붙지 않는다.
  • 추상 method가 상속되면서 override된다.
  • 구현부{ }는 AudioPlayer에서 만들면 됨.
  • Player가 상속된 AudioPlayer를 다른 class에서 instance로 만들어 사용가능.

추상 method

 

abstract 리턴타입 method명();

  • 앞에 abstract가 붙음.
  • 미완성 method.
  • 구현부 { }가 없다.
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우사용.

만약 추상class의 method를
상속받고 싶지 않다면?

원래는 추상class Player를 상속받은 class가 method를 override 안해주면 이렇게 error남
마우스 올려대면 Quick Fix 나오는데
누르면 알아서 method overrid해줌
이런 식으로 만들어주는데, @Override 빼고 다 지워서 씀.


근데 다 사용하고 싶지 않으면 abstract class를 상속받는 abstract class로 가능

이렇게 아무것도 없어도 error 안 뜸
원하는 method만 구현부 { }랑 같이 적어도 사용 가능. 대신 또 상속해야함.

보이진 않지만 다른 method들도 상속은 되어있다.

추상class내에서 서로 호출 가능

객체가 생성될 때, play(int pos) 함수가 실행되도록 만들어 둘 수 있다. 참고로 play()는 매개변수 갯수가 달라서 아예 다른 함수.

 

반응형