まず、抽象クラス
1.1、構文:
これは抽象クラスに変更と抽象クラスです。
抽象クラスは共通である抽象メンバー(メソッド、プロパティ)を含有してもよい[ 空であっても、あなたが抽象メンバーを持つことができない、持つことができる抽象メンバー]
抽象クラスはオブジェクトを作成できません[することができない新規ではなく、インスタンス化] することができます継承します!あなたは配列を作成することができます
定義:
コール:
1.2、セマンティクス(こちら)
抽象クラスは、抽象化(全体としてのデータと動作)を表します。
共発現のコンセプトは、セックスのデータを持っています。
アブストラクトはどのようなデータをどうするかを言ったが、多くの場合、具体的な実践を発現していない特定のデータ値を発現しませんでした
すべてのサブクラス、管理サブクラスを統一、基本クラスを作るために使用されます。
コール:
抽象クラスのために使用さ1.3、
- 「私は願っています複数のクラスの基底クラス、クラス統合管理を行うためにJiangzai [分類]
- 「単に抽象クラスの使用の理由を(も抽象メソッドを使用する場合):
、役割際の一般的な要件分析を探していたときに共通点を見つけることがフィールド;方法があり、
方法いくつかの方法/ いくつかの動作は、別の具体的なサブクラスが異なる実装することができ、親クラスでは、この動作を達成するために必要ではありません!!
この動作は、抽象的に書かれたので、このクラスは抽象クラスになる必要があるが必要です。
第二に、抽象メソッド
1「が定義されます。メソッドは抽象メソッドを実装されていないだけの文の定義。
2》特点:实现类必须实现所有的抽象方法 B:A; 抽象方法必须放在抽象类中或者接口中。
但是子类也是抽象,父类的抽象方法不实现可以吗?可以。
3》 放在抽象类中的抽象方法 必须 加abstract 不能私有
实现类实现抽象方法的方法 必须加 override 不能私有
抽象方法的重写 =抽象方法的实现
抽象方法只表示做什么,但往往不表达具体做法
注意:父抽象类 抽象方法,子类 实现为虚方法 不可以
三、比较抽象方法与虚方法
下面左边基类是利用抽象方法,右边基类是用的虚方法分别计算圆、三角形、矩形的面积:
调用一样:
那什么时候用抽象方法?什么时候用虚方法呢?
上面图片的代码也是面向对象设计原则之一:里氏替换原则 (继承后的重写)
父类出现地方可以被子类替换掉,要保护替换前的原有的工作,在替换后依然保持不变子类在重写父类方法时,尽量选择扩展重写。
但是对于求面积的案例来说用抽象方法比较好,因为父类中的方法子类都没有用到。
抽象方法和虚方法区别:
从定义来说:抽象方法:只有声明【定义】,没有实现的方法 就是抽象方法;虚方法:用vritual关键修饰的已经实现的方法
语法说: 抽象方法:实现类必须实现【重写】;虚方法:可以重写也可以不重写