아하
생활

생활꿀팁

기민한진도개272
기민한진도개272

자바에서 abstract클래스로 이루어진 클래스가 있다면 100% new를 사용해서 객체를 생성할 수 없나요?

abstract클래스는 100% new를 사용해서 메모리에 인스턴스할 수 없나요?
아니면
abstract클래스이더라도 abstract메소드가 없다면 new를 사용해서 메모리에 인스턴스할 수 있나요?
정말궁금합니다..
어떤 학원 강사님이 abstract클래스이더라도 abstract메소드가 없다면 new를 사용해서 메모리에 인스턴스할 수 있다고 하더라고요.. 근데 정말 new를 사용해서 객체도 생성하고..
API에 있던 WindowAdapter인데 이게 abstract클래스인데 new라는 키워드를 사용해서 메모리에 할당을 하는데요..
근데 그러한 표현이 책에는 없던데요..
아시는 분 알려주세요.,.

    55글자 더 채워주세요.
    2개의 답변이 있어요!
    • 프알못
      프알못
      public class Main { public static void main(String[] args) { Test a = new Test(); } public static abstract class Test { } }

      궁금할 땐 직접 해 보시면 됩니다!

      Exception in thread "main" java.lang.Error: Unresolved compilation problem: Cannot instantiate the type Main.Test at Main.main(Main.java:5)

      어? 안 되는데요? Cannot instantiate the type Main.Test라고 하네요.

      abstract 클래스는 abstract 메소드가 없어도 바로 new로 인스턴스화 할 수 없습니다.

    • 강의를 업으로 하시는 강사분께서 이런 간단한 부분을 잘못 알고 계셨을 것 같지 않고 아마도 질문자 분이 잘못 이해하신 부분이 있을 것 같네요

      아마 강사님이 말한 부분은 abstract class가 반드시 abstract method 를 소유할 필요 없다는 이야기를

      했을것 같네요. 아마 아래 소스와 같은 케이스를 말씀하셨을것 같습니다.

      public abstract class TestAbstract { } public class Other extends TestAbstract { } //---------- TestAbstract t = new Other(); //belong main method