abstract class 和 interface 都提供可以不具体实现的方法。其中一个类不能继承多个abstract方法,但是可以实现多个interface。java类没有多继承,但是通过interface来来补充。通过实现过个interface,来实现java多重继承。 java中所有的对象可以用类来表示,但并不是所有的类都是来描绘对象的。用来描绘某一类对象共有的本质就是抽象。
different 从语言层面讲:
abstract class :
可以有 自己的 (private)数据成员。 有些方法可以具体实现。
abstract class可以提供某些方法的部分实现,而interface不可以,这大概就是abstract class唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而 interface做不到这一点,如果向一个interface里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再 实现这个方法才行。
interface :
不可能有自己的数据成员,只能有静态的,不能被修改的 数据成员。即就是 static final。
所有的成员方法都是abstract的。从这方面说interface是abstract class 的一种特殊情况。
分享到:
相关推荐
C++设计模式代码: (VC工程) Creational Patterns Abstract Factory Creates an instance of several families of classes Builder Separates object construction from its representation Factory Method ...
在面向对象编程中,接口是一种 abstract 的数据类型,定义了一个标准,所有实现该接口的类都必须实现该接口中的方法。例如,在 Java 语言中,我们可以定义一个接口 MainBoard,如下所示: ```java interface ...
- 基类中的方法需使用`virtual`或`abstract`声明。 - 派生类中的方法需使用`override`关键字。 - 示例代码: ```csharp public class Class1 { public virtual int Add() { return X + Y; } } public class ...
10. **派生类定义**:使用`:`后接基类名称定义派生类,例如`class DerivedClass : BaseClass`。答案是B。 11. **重用代码**:继承是面向对象的特性,允许子类重用父类的代码和数据,提高代码复用性。答案是C。 12....
3. C#程序的基本单位:C#程序的基本单位是源程序文件(source file),其中包含了一个或多个类(class)。 4. 用户标识符:在C#中,用户标识符是程序员自定义的变量、函数等名称。合法的标识符不能以数字开头,不能...