![]() |
1
8
如果可能的话,抽象类可以有默认行为;接口不能。 抽象类可以为所有方法或没有方法提供默认行为;开发人员的选择;接口不能。 抽象类可以具有与所有子类共享的状态;接口不指定状态。 因此,您的抽象银行帐户可以具有余额属性,允许储蓄和支票访问。 |
![]() |
2
0
我不确定我是否理解您的问题,但是抽象类不能被实例化,因此它只能用于此目的。 |
![]() |
3
0
我将给出一个真实的例子。我有一个抽象类,叫做CSourceControl。然后,我有一个名为csvn的VisualSourceSafe调用cvss类和一个名为csvn的Subversion类,它们都继承自csourceControl。 现在,抽象类有一堆属性和方法(是的,有代码),继承类只能使用这些属性和方法。抽象类还定义了继承类必须实现的一组抽象方法:
从中可以看出,sourcecontrol类将需要这些元素中的每一个,但是它在cvss中的外观与在csvn中的外观非常不同。另一个好处是,在运行时,我可以选择VSS或SVN。简化的代码截图可能是:
现在,当我的客户开始要求Git或SourceGear时,我只需要创建这些类,而其他的更改很少。 |
![]() |
4
0
抽象类无法实例化,因为它们缺少方法定义。 您可以在超类中定义一个垃圾——什么都不做——方法函数。但那太傻了。不要定义“什么都不做”,不要定义任何东西。 缺少主体时,该方法是抽象的。这使得类成为一个抽象的整体。 为什么? 因为您不想指定“什么都不做”的方法体。您希望完全省略方法体,让占位符由子类填充。 创建超类以包含子类之间的公共行为。在某些情况下,超类不能是完整的类,因为每个子类 必须 提供覆盖或扩展。 我们提供一个抽象的超类,因为我们需要子类来提供缺失的特性。 |
![]() |
5
0
抽象类是面向外部利益相关者的。一个程序是由经理设定的,因为利益相关者很容易看到抽象的程序,即公司将于上午9点开放。但是要为软件开发人员实施一个额外的规则,即他们可能上午10点来。因此,由管理者和下面的人设置的规则是通过抽象的和容易看到的来实现的。下午6点离开公司。你可以看到抽象的方法,也可以了解公司的文化。 |
![]() |
timurichk · 我的类不重写抽象方法compareTo 7 年前 |
![]() |
Steffn · angular 4中抽象类的动态多提供程序 7 年前 |
![]() |
Fabio Piunti · Abstract类子类的调用方法 7 年前 |
![]() |
Sunny Deshmukh · 可以从Java中的多个抽象类继承吗? 7 年前 |
![]() |
Felix · 初始化抽象类的一般变量 8 年前 |
![]() |
wheeeee · Scala对象扩展了抽象类/特征,访问伴随类字段 8 年前 |