Java学习之接口的子类必须实现接口的全部方法吗?

接口的子类必须实现接口的全部方法吗?


     接口的子类必须实现接口中全部的方法吗?答案:不是。原因如下:

     如果子类是非抽象类,则必须实现接口中的所有方法;

     如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!

1、抽象类定义

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是 不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

2、抽象类特点

1)抽象类不能实例化。

2)抽象类可以包含抽象方法和抽象访问器。

3)不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。

4)从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。

3、与具体类的比较

1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。

2)允许(但不要求)抽象类包含抽象成员。

3)抽象类不能被密封。

4、抽象类与接口的比较

1)相同点

a、不能实例化;

b、包含未实现的方法声明;

c、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)

2)不同点

a、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。

b、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。

c、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。

d、抽象类是对象的抽象,然而接口是一种行为规范。

结论:综上结果,由于子类类型的不同,对接口的实现要求也是不一样的。

时间: 2024-10-13 14:50:03

Java学习之接口的子类必须实现接口的全部方法吗?的相关文章

java学习--基础知识进阶第三天--接口、多态

今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口的概述 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的"类". 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与实现分离,优化了程序设计. 1.2 接口的格式&使用 1.2.1 接口的格式 与定义类的class不同,接口定义时需要使用interface关键字. 定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字

2019-05-17 Java学习日记之面向对象_多态&抽象类&接口

多态 多态的概述: A:多态(polymorphic) 事物存在的多种形态 B:多态前提 a:要有继承关系 b:要有方法重写c:要有父类引用指向子类对象 多态中的成员访问特点之成员变量: 成员变量:编译看左边(父类),运行看左边(父类)多态中的成员访问特点之成员方法:成员方法:编译看左边(父类),运行看右边(子类)多态中的成员访问特点之静态成员方法:静态方法:编译看左边(父类),运行看左边(父类)(静态和类相关,算不上重写,所以访问还是左边的)只有非静态的成员方法,编译看左边,运行看右边 多态的

java 学习总结(二) 类的接口、继承与多态

其实,在学习c++的时候就有接触关于继承之类的词语了,奈何,奈何.当时年少不懂事,这些词就像风儿一 样,吹一吹就散了~ 那么,现在重新接触,再好好地梳理一下吧(*-*).你好好学我们还是好盆友. 在学习这一部分的时候,花了一晚上的时间囫囵吞枣把整一个章节看完.(菜鸟的水平你们懂的)然后傻傻 以为自己已经学会了,就在这个时候.某"良师损友"粗来了.给的棒子好疼,宝宝很委屈.他说,来,你给我讲讲 什么是多态.我还记得当时宝宝一脸懵逼地在脑海里搜索一堆东西却一个字也说不出来的模样.说透了,就

java学习笔记(二)图形用户接口

这个学期主要放在ACM比赛上去了.比赛结束了.不知不觉就15周了,这周就要java考试了.复习一下java吧.java的学习的目的还是让我们学以致用,让我们可以运用java开发一下小项目.而不是单单应付考试.今天复习了一下,图形用户接口,对监听的实现又加深了一些.java的布局控制,gui动画: 对书上代码的实现: 这个程序的功能就是按下button,会改变颜色.后面改变颜色的那个类是渐变的所以效果不明显: 主要是熟悉一下,布局管理和监听的写法.还有paintComponent类的一些使用方法:

Effective Java 学习笔记之第七条——避免使用终结(finalizer)方法

避免使用终结方法(finalizer) 终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的. 不要把finalizer当成C++中析构函数的对应物.java中,当对象不可达时(即没有引用指向这个对象时),会由垃圾回收器来回收与该对象相关联的内存资源:而其他的内存资源,则一般由try-finally代码块来完成类似的工作. 一.finalizer的缺点: 1. 终结方法的缺点在于不能保证会被及时地执行. 及时执行finalizer方法是JVM垃圾回收方法的一个主要功

java学习之接口、多态和内部类

接口是一组行为的规范.定义.接口是面向对象编程体系中的思想精髓之一,使用接口可以让我们的程序更加利于变化. 接口的格式: interface 接口名称{ 全局变量: 抽象方法: } 接口中的成员修饰符是固定的,成员常量用public static  final修饰:成员函数用public  abstract修饰,接口的出现将“多继承”通过多实现来体现.接口的使用也有一定的规则:接口可以继承多个接口,一个类中可以实现接口和多接口,抽象类实现接口可以不实现方法:接口中的所有实现方法的访问权限都是pu

Java学习之List接口

List接口 List接口的定义如下: public interface List<E>extends Collection<E> 可以发现List接口时Collection接口的子类,List接口大量的扩充了Collection接口的操作,List接口里的内容是允许重复的. List接口常用方法 一句话概括这些方法的功能:就是为了实现增删减查的功能. 有如下的方法: void add(int index,E element) //在列表的指定位置插入指定元素(可选操作).将当前处

JAVA学习总结(四)

1.接口 interface 1.1语法: 修饰符 interface 接口名{ 常量 都是抽象方法 } 修饰符:默认 | public接口名:自定义,规则与类名相同,一般I字母打头:wifi接口(Iwifi) //示例: public interface Iwifi{ int COUNT=1: public abstract void send()://发送 public void receive()://接收 } 1.2接口与类的区别: 接口不能用于实例化对象. 接口没有构造方法. 接口中所

python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(self,name,color,age): # 只干初始化的活 self.name = name if not isinstance(name,str): raise TypeError self.color = color self.age = age def jineng(self): print('新技能')