abstract 키워드로 수정된 클래스를 추상 클래스 , 즉 추상 클래스 라고 부릅니다. 예를 들면 다음과 같습니다.
추상클래스A{…}
우리는 abstract 키워드로 수정된 메서드를 추상 메서드 , 즉 추상 메서드 라고 부릅니다. 예를 들면 다음과 같습니다.
추상 int max(int x,int y);
알아채다:
1) 추상 메서드의 경우 선언만 허용되고 구현은 허용되지 않습니다. 즉, 메서드 본문이 없으며 final과 abstract를 동시에 사용하여 메서드나 클래스를 수정할 수 없으며 static은 추상 메서드는 수정할 수 없습니다. 즉, 추상 메서드는 인스턴스 메서드여야 합니다.
2) 추상 클래스는 추상 메소드나 비추상 메소드를 가질 수 있지만, 비추상 클래스는 추상 메소드를 가질 수 없습니다.
예를 들어 클래스 A의 max() 메서드는 추상 메서드이고 min() 메서드는 일반 메서드(비추상 메서드)입니다.
abstractclassA{abstractintmax(intx,inty);intmin(intx,inty){returnx<y?x:y;}}
추상 클래스의 경우 new 연산자를 사용하여 이 클래스의 객체를 만들 수 없습니다. 비추상 클래스가 추상 클래스의 하위 클래스인 경우 상위 클래스의 추상 메서드를 재정의하고 메서드 본문을 제공해야 합니다. 메서드나 클래스를 동시에 수정하기 위해 final과 abstract를 사용할 수 있는 이유입니다.
추상 클래스를 사용하여 객체를 선언할 수 있습니다. new 연산자를 사용하여 객체를 생성할 수는 없지만 객체는 하위 클래스 객체의 업캐스트 객체가 될 수 있으므로 객체는 하위 클래스에 의해 재정의된 메서드를 호출할 수 있습니다.
참고: 추상 클래스에는 추상 메서드가 없을 수 있습니다. 추상 클래스가 추상 클래스의 하위 클래스인 경우 상위 클래스의 추상 메서드를 재정의하거나 상위 클래스의 추상 메서드를 상속할 수 있습니다.