생성의 용도가 아닌 지침서 정도의 용도로 사용하는 생성불가능한 클래스인 추상 클래스에 대해 알아보자.


◆ abstract(추상) 클래스

클래스 앞에 abstract 키워드를 붙이면 추상클래스가 된다.

  • 추상클래스는 기본적으로 객체생성이 불가능하다.( 변수는 선언은 가능 )
public abstract class Piece{}
Piece p;=> 가능(o)
p=new Piece()=> 불가능(x)

객체 설계의 목적이 아닌 하위 클래스들의 제어용으로 쓰이는 클래스는 abstract class 로 만드는 것이 좋다.

▶ 추상클래스 설계예제

public abstract class Abclass{
    public Int a;
    
    // 오버라이드가 필수가 아님
    public void abMethod(){
		System.out.println(“추상클래스 일반메서드”);
    }
    
    // 추상 메서드는 오버라이드가 필수
    public abstract void abstMethod(){
	   System.out.println(“반드시 오버라이드 해야하는 메서드”);
    }
}


◆ abstract method ( 추상 메서드 )

추상클래스 안에서 쓰이는 오버라이드가 목적인 메서드 또한 abstract를 붙여서 추상메서드로 만든다.

▶ 추상메서드 설계

중괄호( {} )가 없고 끝에 세미콜론( ; )을 붙인 형태

.

public abstract boolean movableTo(int tx, int ty);

추상클래스를 상속받아 사용하는 클래스들은 반드시 추상메서드를 오버라이드 구현해 야한다.
( 추상 클래스가 추상메서드를 꼭 만들 필요는 없음 )



◆ super 와 this 키워드

  • super: 부모클래스를 지칭하는 키워드
    => super() : 부모생성자 호출, super.필드 : 부모의 필드

  • this: 해당 클래스를 지칭하는 키워드
    => this.필드 : 해당 클래스에서의 필드
    => 변수명이나 메서드명이 겹칠때 등등사용…



◆ 분기처리

for문등에서 처리하기 힘든 분기처리를 하기 위해 사용하는 방법으로 continue키워드를 사용하여 원하는 지점으로 이동시킨다.

row :
    System.out.println("분기");
    
continue row;  // row 다시 돌아감!


◆ 객체 비교

객체.compareTo(객체)


이 메소드가 반환하는 int형 정수가 양수일 때는 앞에 객체가 큰 것이고, 음수일대는 매개변수 객체가 더 큰 값을 가진 것이다.
=> 단, 객체 클래스 내부에 compareTo메서드가 오버라이드 되어있어야 한다.
( 보통 라이브러리 API객체들 같은 경우에 대부분 해당 메서드가 오버라이드 되어있다. )
=> 스트링 객체는 맨 앞문자의 크기를 비교하고 같을 경우 그다음 문자 순으로 비교된다.