2023dirt 개발자중공업

결론: 객체생성을 하지 않아도 된다는 의도를 명확히 하기위해서 + 의도치않은 메모리 낭비를 막기위해

 

 

추상클래스는 인스턴스가 생성되지않는지 생각해보았습니다.

 


 

 

💡 추상클래스의 인스턴스화

모두가 알 듯이 인스턴스화를 할 수 없다.

추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수 없다.

추상 클래스는 새로운 실체 클래스를 만들기 위해 부모 클래스로만 이용된다. 

 

인스턴스화를 위한 유일한 방법은 자식클래스를 생성하여 super()로 부모생성자를 호출하는 방법이 있다.

부모생성자가 매개변수가 있다면 매개변수도 같이...

 

 

 

 


 

왜 추상클래스를 인스턴스화 시키지 못할까?

 

 

📌 추상클래스는 보통 동작이 정의되지않은 추상 메소드를 포함한 클래스를 말한다.

 

 

추상클래스를 사용하면, 추상클래스를 상속받는 자식 클래스들은 반드시 추상메소드를 재정의해야하고, 같은 이름을 가진, 다른동작을하는 메소드를 얻을 수 있는 객체제지향의 다형성 특징을 가지는 클래스이다.

 


본래 추상클래스는, 이처럼 동작이 정의되지않은 추상 메소드를 포함하고 있기 때문에 인스턴스를 생성할 수 없다.

추상클래스는 먼저 상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩하고 나서야 자식 클래스의 인스턴스를 생성할 수 있게 막아놓았다고 한다.

 


추상 메소드의 사용 목적

자바에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함입니다.

 

 

abstract 키워드 자체에 '해당 클래스는 객체화 할 수 없음'의 의도가 명확히 드러나고 (객체화 할 수 없음에 대한) 구현이 포함되기 때문입니다.
private 생성자를 쓰더라도 reflection 기술을 사용하면 객체화 할 수 있게 된다.

 

 

 

'😡각종문제들' 카테고리의 다른 글

자바 변수가 헷갈린다.  (0) 2023.04.29
04.25 HTTP란 무엇인가?  (0) 2023.04.26
04.23. public static void main(String[] args)은 무엇인가?  (0) 2023.04.23
Scanner  (1) 2023.04.13