一.类与接口的区别
类:描述了一个实体,包括实体的状态,也包括实体可能发出的动作。
接口:定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。
1.接口与类区别:
(1)接口有点象一个规范、一个协议,是一个抽象的概念;
(2)而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。
(3)从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。
2.接口与抽象类的区别:
(1)A class can implement any number of interfaces but can subclass at most one abstract class.
(2)An abstract class can have nonabstract methods, which are usually instance of the TEMPLATE METHOD pattern. All the methods of an interface are abstract,
whether or not this declaration is explicit.
(3)An abstract class can declare instance variable that its subclass inherit. An interface cannot declare instance variables, although it can establish static final fields.
(4)An abstract class can define constructors, an interface cannot.
(5)An abstract class can have methods whose visibility is protected, private, or none(package);every method in an interface must be public.
(6)An abstract class inherits form Object, including such method as clone() and equals().
二. 接口的用处主要体现在下面几个方面:
(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。
(2)通过接口可以指明多个类需要实现的方法。
(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。
三.一些接口的疑问:
1、从书中看到的是java程序的接口中只定义了常量及空方法,空的方法有什么用呢,还要在类中写方法体,那还要接口干什么。
答:接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。
你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么?
2、一个程序中写了2个接口,并在同一个类中写方法体,这与多继承有什么关系。
答:一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。
这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。
3、包中那些已定义的接口,怎么知道那里面定义了什么方法。
答:接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了。
本文向大家介绍C#中new和override的区别个人总结,包括了C#中new和override的区别个人总结的使用技巧和注意事项,需要的朋友参考一下 问题: A类 有方法 public virtual void test() B类继承自A类,有方法 public new void test() 如下实例化: 会调用哪个类中的TEST方法,最好能详细给我解释一下好吗?先谢谢了! 回答: 如果你用
本文向大家介绍C++ 抽象类和接口的区别?相关面试题,主要包含被问及C++ 抽象类和接口的区别?时的应答技巧和注意事项,需要的朋友参考一下 类型 abstract class Interface 定义 abstract class关键字 Interface关键字 继承 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 接口只可以继承接口(一个或多个);子类可以实现多个接口 访问修饰符
我需要为对后端服务器的HTTP请求创建某种类型(使用Angular 2),例如:}, 我应该用什么来构建这些模型?谢谢!
本文向大家介绍浅析Java中comparator接口与Comparable接口的区别,包括了浅析Java中comparator接口与Comparable接口的区别的使用技巧和注意事项,需要的朋友参考一下 Comparable 简介 Comparable 是排序接口。 若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实
本文向大家介绍浅析C#中结构与类的区别,包括了浅析C#中结构与类的区别的使用技巧和注意事项,需要的朋友参考一下 一、 结构:值类型,存储在堆栈中,位于计算机的内存逻辑区域中 类 :引用类型,存储在堆中,位于计算机内存的不同逻辑位置 二、 较小的数据使用结构; 将一个结构值传递到方法时,传递的是整个数据结构; 传递一个类,实际上是将引用传递到对象,即只有内存地址;
本文向大家介绍C#程序中抽象类和接口之间的区别,包括了C#程序中抽象类和接口之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,C#和Java一样,都是面向对象的程序设计,并且为诸如封装,抽象,继承和多态性等面向对象的概念提供全面支持。 与抽象相反,抽象类和接口都以图片形式出现,因为它们都在C#程序中提供了抽象。 在抽象类中,我们可以创建需要由派生类实现的功能。接口允许我们定义一个或多个