추상 메소드를 간단하게 설명하면 선언부는 있는데 구현부가 없는 메소드를 말한다. 추상 메소드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스로 선언해야 한다. 물론 추상 메소드 없이도 추상 클래스를 선언할 수는 있다.
abstract 왜 사용해야 하는가? 다형성을 구현해서 하위 클래스에 메소드 구현을 강제화 하고 싶을경우 사용하면 된다.
클래스의 인스턴스, 즉 객체를 만들 때마다 new 키워드를 사용한다.
new 클래스명()을 자세히 보면 열고 닫는 소괄호가 보인다. 소괄호는 메소드를 의미하는 것이다. 클래스명에 붙은 소괄호는 생성자를 뜻한다. 인자가 없는 생성자는 자동으로 만들어 주기 때문에 직접 사용하지 않아도 된다. 하지만 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다.
객체 생성자가 있다면 클래스 생성자도 있을 거라고 기대해 볼 만하다. 자바는 그 기대의 절반만 부응해 준다. 클래스 생성자는 존재하지 않는다. 그러나 클래스가 스태틱 영역에 배치될 떄 실행되는 코드 블록이 있다.
static 블록은 클래스가 로드 될떄 실행된다. 당연히 스태틱 블록에서 사용할수 있는 속성과 메소드는 당연히 static 멤버 뿐이다.