直接?ではないインターフェースのインプリメント

インターフェースを間接的に継承するようなコードを書いてみたら動いた。

public class Jisso
{
    // インターフェース
    public interface Intf
    {
        public int getNum();
        public void setNum( int num );
        
        public void printNum();
    }

    // インターフェースのデフォルト実装
    public static abstract class DefaultImpl1 implements Intf
    {
        int num = 0;
        public int getNum()
        {
            return num;
        }
        public void setNum( int num )
        {
            this.num = num;
        }
    }
    
    // インターフェースを実装したabstractクラスの継承
    public static class ImpleTest1 extends DefaultImpl1
    {
        public void printNum()
        {
            System.out.println( "num=" + getNum() );
        }
    }
        
    // デフォルト実装その2(メソッドシグネチャはIntfにあわせてある)
    public static class DefaultImpl2
    {
        int num = 0;
        public int getNum()
        {
            return num;
        }

        public void setNum( int num )
        {
            this.num = num;
        }
    }
    
    // 継承+インターフェースのインプリメント
    public static class ImpleTest2 extends DefaultImpl2 implements Intf
    {
        public void printNum()
        {
            System.out.println( "num=" + getNum() );
        }
    }
    

    public static void main(String[] args) 
    {
        Intf test = null;
        int num = 0;
        
        test = new ImpleTest1();
        test.setNum( 1 );
        test.printNum();
        num = test.getNum();
        
        test = new ImpleTest2();
        test.setNum( 2 );
        
        test.printNum();
        num = test.getNum();
    }
}

どちらも同じように動くのだけど、ImpleTest2の実装はなんだか気持ちが悪いなぁ・・・

ImpleTest2のような書き方に意味はあるんか?