java多状態とc+との違い
java多状態とc+との違い
参考:
C+++-虚数関数、多形性、純虚数関数、抽象類
java多態:
java多態はc++より簡単です.
作用範囲:基質と派生類中
実現方法:再構成、再構成の詳細な参照:http://blog.csdn.net/zhangjikuan/article/details/51867596
アプリケーションの実現:Java多形実現の核心思想は派生的な実例であり、基種に与えられる.
eg:基質A、サブクラスB extends A、A=new B();このように多状態を実現し、アップコンバートとも呼ばれ、この時Aにおける再構成方法を呼び出して呼び出したのは実はB類の方法であった.
c+++との違い:c+++の多状態はカバーに依存し、カバーと再構成の違いはカバーが必要な基本類の中にvirtueキーワードがあり、c++++多状態形成はサブクラスのオブジェクトポインタがベースクラスに割り当てられ、javaよりやや面倒です.
具体的な手順で説明します.
参考:
C+++-虚数関数、多形性、純虚数関数、抽象類
java多態:
java多態はc++より簡単です.
作用範囲:基質と派生類中
実現方法:再構成、再構成の詳細な参照:http://blog.csdn.net/zhangjikuan/article/details/51867596
アプリケーションの実現:Java多形実現の核心思想は派生的な実例であり、基種に与えられる.
eg:基質A、サブクラスB extends A、A=new B();このように多状態を実現し、アップコンバートとも呼ばれ、この時Aにおける再構成方法を呼び出して呼び出したのは実はB類の方法であった.
c+++との違い:c+++の多状態はカバーに依存し、カバーと再構成の違いはカバーが必要な基本類の中にvirtueキーワードがあり、c++++多状態形成はサブクラスのオブジェクトポインタがベースクラスに割り当てられ、javaよりやや面倒です.
具体的な手順で説明します.
<pre name="code" class="java">package DuoTai;
public class DuoTai {
public static void main(String[] args){
Base bs=new Base();
bs=new First();
bs.Test();
bs=new Second();
bs.Test();
}
}
class Base{
public void Test(){
System.out.println("DuoTai");
}
public void draw(Base bs){
bs.Test();
}
}
class First extends Base{
public void Test(){
System.out.println("First");
}
}
class Second extends Base{
public void Test(){
System.out.println("Second");
}
}
看上面这个程序就很好的理解多态了。
多态的真正运用比较多的是通过函数参数的调用,如下面程序所示
<pre name="code" class="java">package DuoTai;
public class DuoTai {
public static void main(String[] args){
Base bs=new Base();
bs.draw(new First());
bs.draw(new Second());
}
}
class Base{
public void Test(){
System.out.println("DuoTai");
}
public void draw(Base bs){
bs.Test();
}
}
class First extends Base{
public void Test(){
System.out.println("First");
}
}
class Second extends Base{
public void Test(){
System.out.println("Second");
}
}