\r\n\r\n

デファクトと抄録の違い

virtualとabstractは、javaやcなど、ほとんどのオブジェクト指向(Oo)プログラミング言語で使われているキーワードです。言語によって微妙に意味が異なるが、virtualとabstractのキーワードはいずれも、そのキーワードが付けられた実体の部分的な実装を意味する...

仮想・抽象

JavaやC言語など、多くのオブジェクト指向(OO)プログラミング言語で使われるキーワードに「Virtual」と「Abstract」がある。言語によって多少意味は異なりますが、VirtualキーワードとAbstractキーワードは、どちらもそのキーワードが付与されたエンティティに部分的な実装を与えるものです。

概要

通常、抽象クラスは抽象基底クラス(ABC)とも呼ばれ、インスタンス化できない(クラスのインスタンスを生成できない)。したがって、抽象クラスは、プログラミング言語が継承(クラスを拡張してサブクラスを作成する機能)をサポートしている場合にのみ意味を持つ。抽象クラスは通常、抽象的な概念や実体を表し、部分的な実装を持つか、あるいは実装を持たない。したがって、抽象クラスは派生するサブクラスの親として機能し、そのクラスは親クラスの不完全な機能を共有し、その機能を達成するための機能を追加することができるようになります。抽象クラスは、抽象メソッドを含むことができます。拡張抽象クラスのサブクラスは、これらの(継承された)抽象メソッドを実装することができます。このような抽象的なメソッドをすべて実装しているサブクラスは、具象クラスと呼ばれます。しかし、そうでない場合は、サブクラスも抽象クラスとなる。これらのことは、プログラマがクラスを抽象クラスと指定するとき、そのクラスは不完全であり、サブクラスから継承しなければ完成しない要素を持つことを意味しているのである。これは、2人のプログラマー間で契約を結ぶのに最適な方法で、ソフトウェア開発における作業を簡略化することができます。継承するコードを書くプログラマは、メソッドの定義に厳密に従う必要があります(もちろん、独自の実装を持つことも可能です)。JavaやC言語では、抽象クラスや抽象メソッドはAbstractキーワードで宣言されます。

デファクト

仮想メソッド/関数は、継承したクラスの振る舞いを(同じシグネチャを持つ関数を用いて)選択的にオーバーライドする機能を提供します。仮想機能という概念は、以下のような場面で重要である。クラスがサブクラスから派生していると仮定すると、派生クラスのオブジェクトが使用されるたびに、ベースクラスまたは派生クラスのオブジェクトを参照することができます。しかし、ベースクラスのメソッドがオーバーライドされている場合、メソッド呼び出しの動作が曖昧になることがあります。そこで、この曖昧さを解消するために、仮想キーワードを使用します。メソッドがVirtualと表示されている場合は派生クラスの関数が、そうでない場合は基底クラスの関数が呼び出されます。例えばC++では、virtualキーワードはまさにこの目的のために使われている。C# では、Virtual キーワードが同様の方法で使用されますが、さらに、キーワード オーバーライドが適用され、オーバーライドされたすべてのメソッドが変更されます。しかし、Javaでは、明示的なvirtualキーワードは存在しない。非静的なメソッドはすべて仮想とみなされます。実体を持たない仮想関数を純粋仮想関数と呼びます。JavaやC言語では、抽象的なメソッドは実際には純粋に仮想的なものである。

イマジネーションとアブストラクトの違い

  • 2020-11-02 16:43 に公開
  • 閲覧 ( 18 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ