接口、抽象类

1.概念

接口是一组虚方法的抽象类型,其中每一个方法都有其名称、参数、返回值。

接口方法不能包含任何实现。

一个类可以实现多个接口,当一个类继承某个接口时,不仅要实现接口定义的功能,还要实现接口继承其他接口中的功能。

抽象类是多个派生类共享基类的公共定义,它不仅可以提供抽象类,也可以提供非抽象类。抽象类不能被实例化,必须通过继承由派生类实现其抽象方法,如果派生类没有全部实现的抽象方法,则派生类也需要定义为抽象类。

2.相同点、不同点

相同点:都不可以被实例化,需要派生类实现其抽象方法。

不同点:

a.(定义)接口是一组行为规范;抽象类是一个不完全的类。

b.(实现)接口支持多继承,抽象类不支持多继承;接口支持回调,抽象类不支持。

c..(内部部分)接口只能定义规则;抽象类不仅可以定义规则,还可以有实现的成员。

3.应用场景:

MSDN这样建议

1.         如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单易行的方法来控制组件版本。通过更新基类,所有继承类都随更改自动更新。另一方面,接口一旦创建就不能更改。如果需要接口的新版本,必须创建一个全新的接口。

2.         如果创建的功能将在大范围的全异对象间使用,则使用接口。抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。

3.         如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类

4.         如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。抽象类允许部分实现类,而接口不包含任何成员的实现。

时间: 2024-10-29 00:05:23

接口、抽象类的相关文章

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

毕向东Java视频学习笔记【Day09 继承+接口+抽象类】

Java_Day09 继承+接口+抽象类 构造函数 子父类中的构造函数特点. 在子类构造对象时,发现访问子类构造函数时,父类也运行了. 为什么呢? 因为:在子类的构造函数中第一行有一个默认的隐式语句 super() 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参构造函数. 在每个子类构造函数中,都有一个隐式的super()调用父类空参构造函数. 如果想输出22行内容,必须在29行改为super(5),这样可以访问到父类带参数的构造函数. 为什么子类实例化的时候会访问到父类的构造函

接口 抽象类 虚方法 三者比较-1

接口 1.接口只提供方法规约,不提供方法体: 2.接口中的方法不能用关键字修饰: 3.接口里不能有接口和变量: 4.接口里的方法在子类中必须全部实现: 5.接口可以实现多重继承: 抽象类 1.抽象类可以从接口继承: 2.抽象类中的实体方法在子类中不可以重写,只可以被引用: 3.抽象类中的抽象方法不可以有方法体,抽象类中的抽象方法在子类中必须重写: 4.抽象类中的虚方法在子类中可以选择性的重写: 虚方法 1.可以在子类选择性的重写: 2.不重写也可被子类调用: 接口与抽象类的异同 1.抽象类的抽象

java(10)接口抽象类

package a; public interface aaa { public int getMax(); String getMes(); } package a; import static java.lang.System.out; public class test implements aaa { public int getMax() { int i = 123; return i; } public String getMes() { String s ="实现接口里的方法&qu

接口 抽象类

接口 认为是一个特殊的抽象类 当抽象类的中的方法 都是抽象的 那么该类可以通过接口的形式来表示interface interface 接口 class 定义类 interface 定义接口 接口 里的成员 全部是抽象的 接口的中常见的定义 常量:public static fianl方法:public abstract implements : 实现后 接口不可以创建对象 因为有抽象方法 需要被子类实现 子类对接口的抽象方法全部覆盖后 子类才可以被实例化 接口 可以被类多实现 接口抽象方法没有主

Java 接口-抽象类解析

对于面向对象编程,抽象是它的三大特征(抽象.继承.多态)之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类. 这两者既相似又存异.诸位在初学的时候也会傻傻分不清接口与抽象类的区别,大多数都在随意使用,实则不然. 一.抽象类 使用abstract关键字声明的类就是抽象类.此处与含有抽象方法的类是抽象类的概念并不冲突,抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.如含有抽象方法的抽象类声明如下: public abstract class HelloAbstractor

接口+抽象类+实现类的三层设计模型

模型: 应用情景: 1,访问入口是统一的 2,具体实现有多种变化 模拟情景: 1,蛋糕店有一台生产蛋糕的机器(接口),机器有磨具插槽(定义入口) 2,机器需要有不同的蛋糕磨具才能塑形(抽象类),磨具与机器之间有相匹配的型号(入口实现) 3,磨具又规定了蛋糕的大小,但是蛋糕材料没有固定(差异化定义) 4,果仁蛋糕磨具中放入果仁,鸡蛋蛋糕磨具中放入鸡蛋(差异化实现) (1),机器是接口 (2),磨具是抽象类 (3),磨具+材料是具体实现 解析: 抽象类对接口进行了统一入口的实现,并且约束了具体实现类

12.面向对象(继承/super/接口/抽象类)

面向对象继承与派生继承继承顺序继承原理子类调用父类的方法(super)组合接口接口的概念:接口的概念解释和使用:python中的接口:抽象类 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 class A: pass class B(A): pass 在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或者超类,新建的类称为派生类或者子类 python中类的继承分为,单继承和多继承. 查看继承的方法B.__bases__ 如果没有指定基类,python的类会默

【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数. 答案很明确,可以继承.其实从Object就是个实体类,Java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的. 关键在于这答案里所说的"前提是实体类必须有明确的构造函数"一句,是什么意思.

PHP对象和接口抽象类注意事项

Php 的对象的实现: 注:对象名称最好以对象名.class.php来进行命名. 1. 对于静态类的成员不能使用$this->这个来调用其静态类的成员和函数,应该使用self::成员或者方法来进行调用: 2.对于继承了静态类的新类需要调用父类的静态方法,应该采用parent::子类的静态成员和方法来进行调用. 3.定义类常量的时候其用const来定义,不能用define来定义.使用也需要使用self::常量成员来访问. Php的接口的实现 接口的名字最好以I+接口名.php进行命名. 需要对接口