소스를 공개하는게 아주 쪽팔리지만..(내 얼굴에 침뱉기지만..ㅋㅋ)
내가 간단히 짜봤는데 참고가 됬으면 좋겠네...
나도 객체지향 설계는 잘 못해서...욕좀 먹겠지만...아무튼 자바는 모르고
비슷한 C++로 한거야..

#include<iostream>

using namespace std;

typedef class _COndo
{
private:
    float Ondo;
public:

    _COndo() : Ondo(0) {cout << \"_COndo()\" <<endl;}
    virtual ~_COndo() { cout << \"~_COndo()\" <<endl; }

    void SetOndo(float Input)
    {
        Ondo = Input;
        cout << \"void _COndo::SetOndo(float Input)\" <<endl;
    }
    float GetOndo(void)
    {
         cout << \"void _COndo::GetOndo(void)\" <<endl;
          return Ondo;
     }
     virtual float Convert(void) = 0;
}COndo;

typedef class _HwaOndo : public _COndo
{
public :
       _HwaOndo() { cout << \"_HwaOndo()\" <<endl; }
       virtual ~_HwaOndo() { cout << \"~_HwaOndo()\" <<endl; }

        float Convert(void)
        {
               float Sub = 0;
               //변환루틴

               cout << \"float _HwaOndo::Convert(void)\" <<endl;

                return Sub;
         }
}HwaOndo;

typedef class _SubOndo : public _COndo
{
public :
            _SubOndo() { cout << \"_SubOndo()\" <<endl; }
            virtual ~_SubOndo() { cout << \"~_SubOndo()\" <<endl; }
            float Convert(void)
           {
                   float Hwa;
                   //변환루틴
                   cout << \"float _SubOndo::Convert()\" <<endl;

                    return Hwa;
              }
}SubOndo;

int main(void)
{
           COndo* Hwassindo = new HwaOndo;

           Hwassindo->SetOndo(10);

           float Convert = Hwassindo->Convert();

           cout << Hwassindo->GetOndo() << endl;

          delete Hwassindo;

}