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

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

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

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

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、抽象类是对象的抽象,然而接口是一种行为规范。

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

java 子类必须实现_Java学习之接口的子类必须实现接口的全部方法吗?相关推荐

  1. java多态怎么学_Java学习笔记---多态

    在面向对象的程序设计中,多态是继数据抽象和继承之后的第三种基本特性: 多态通过分离做什么(基类对象)和怎么做(导出类对象),从另一角度将接口和实现分离开来.多态不但能够改善代码的组织结构和可读性,还能 ...

  2. java开发五大原则_Java学习之路-五大基本原则

    Java学习之路-五大基本原则 Java学习之路-五大基本原则 转载:https://github.com/hollischuang/toBeTopJavaer/blob/master/basics/ ...

  3. java对象序列化作用_Java学习之——理解对象序列化

    Java的对象序列化就是把对象写入到输出流中,用来存储或传输:反序列化就是从输入流中读取对象.简单的来说是指将那些实现了Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列 ...

  4. java 内部类 返回值_Java学习笔记:形参和返回值、内部类、常用API

    形参和返回值 类名作形参 public void useCat(Cat c){ c.eat(); } CatOperator co=new CatOperator(); Cat c=new Cat() ...

  5. java 判断object类型_Java学习-方法与多态的学习心得

    一 1.什么是方法重写 方法的重写或方法的覆盖(overriding) 子类根据需求对从父类继承的方法进行重新编写 重写时,可以用super.方法的方式来保留父类的方法 构造方法不能被重写 2.方法重 ...

  6. java string逆序_Java学习笔记(八)——异常

    本节主要内容是对 Java 的异常处理进行讲解,主要包含以下知识点: 异常分类 声明及抛出 捕获异常 自定义异常 * 异常堆栈 异常概述 对于程序的错误以及外部环境能够对用户造成的影响,我们应当及时报 ...

  7. java rmi 是否 必要_Java学习之路-RMI学习

    Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...

  8. java基本语法心得_Java学习笔记(一)——基础语法(上)

    Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...

  9. java基础代码实例_java学习之web基础(3):Servlet 和 Request的登录处理实例

    在页面输入用户名和密码,进行权限判断. 登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您: 登录失败跳转到FailServlet展示:登录失败,用户名或密码错误. 我们这里使用 ...

最新文章

  1. mysql 关联 update_关于SQL UPDATE关联更新
  2. [field:softlinks/]逻辑过程
  3. 文本编辑器实现文本打印的功能
  4. C语言程序设计 | 模拟实现内存操作函数:strncpy, strncat, strncmp, memcpy, memmove
  5. 关于宁波一些眼科流传的营养针
  6. 谈谈 css 的各种居中——读编写高质量代码有感
  7. python用turtle画皮卡丘_用Python的turtle作画(2)——皮卡丘
  8. 云原生时代老牌IDC巨头谋求转型,世纪互联成立新品牌“互联科技(NEOLINK)”
  9. Oracle连接数据库的方式
  10. 访问量冲破1000大关,截图庆祝!
  11. “the import java.io cannot be resolved”错误的解决方法
  12. 基于嵌入式linux路由转发功能的实现
  13. app软件测试的意义,APP测试用例的作用是什么
  14. 从网站建设看中外差异
  15. Linux编程:获取时间戳
  16. 阿里云大学诚邀各界”人工智能”专家共建人工智能方向人才培养生态!
  17. SpringAOP的实现原理
  18. java resource文件_利用java如何实现读取resource目录下文件
  19. Excel 按照某一列不同内容插入分页符号
  20. Golang源码探索----GC的实现原理(6)

热门文章

  1. 今晚直播丨如何通过APEX实现数据库自动晨检功能
  2. 资源丨MySQL故障排查思路方法PPT视频24问答
  3. 数据安全:英国公司泄露超过100万人的指纹和面部识别数据
  4. 云图说丨不同区块链之间如何跨链交互?
  5. 基于多源数据画像的失败用例智能分析
  6. 抵制羊毛党,图计算“加持”互联网电商风控
  7. 实战案例丨分布式系统中如何用python实现Paxos
  8. 简化业务代码开发:看Lambda表达式如何将代码封装为数据
  9. 【开发记录】Linux常用命令记录(一)
  10. 使用Python为中秋节绘制一块美味的月饼