トップ 一覧 Farm 検索 ヘルプ RSS ログイン

C++とJavaの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{category プログラミング}}
{{category JAVA}}
{{category Java}}


C++とJavaの違いのメモ
!オーバライドと仮想関数のメモ
C++の場合、スーパークラスのメンバ関数にvirtualをつけると次のように動作する。
つけない場合には、スーパークラスの関数が呼ばれる。
 #include <iostream>
 using namespace std;
 class VirtualTest
 {
 public:
   virtual void test(){ cout << "virtual test" << endl; }
 };
 class Test
 {
 public:
   void test(){ cout << "test" << endl; }
 };
 class VirtualTest1 :public VirtualTest
 {
 public:
   void test(){ cout << "virtual test 1" << endl; }
 };
 class Test1: public Test
 {
 public:
   void test(){ cout << "test 1" << endl; }
 };
 int main(){
   VirtualTest *v;
   Test *t;
   v = new VirtualTest1;
   t = new Test1;
   v->test();
   t->test();
 }
結果
 virtual test 1
 test
Javaの場合virtualはなくて、生成したクラスの方のメソッドが呼ばれる。
デフォルトでvirtualがついてるってことかな。
 class VirtualTest{
   public void test(){
     System.out.println("virutal test");
   }
 }
 
 class VirtualTest1 extends VirtualTest{
   public void test(){
     System.out.println("virutal test 1");
   }
 }
 
 public class Test{
 
   public static void main(String args[]){
     VirtualTest v = new VirtualTest1();
     v.test();
     ((VirtualTest1)v).test();
   }
 
 }
結果
 virutal test 1
 virutal test 1