public abstract class Student<B extends Student<B>> {

public void yo() {

}
}

여기서 처럼, generic에 extend하고 자기 자신의 클래스를 넣었는데 


이유가 뭐임? 


아래처럼 써봤는데, 무슨 용도로 사용하는거? 또는 검색할 수 있는 용어 추천좀.


public class GoodStudent extends Student<GoodStudent>{
@Override
public void yo(){
System.out.println("good");
};
}