`

【Java核心-基础】接口 和 抽象类

    博客分类:
  • Java
 
阅读更多

Java单继承的局限

与C++ Python之类语言不同,Java 不支持多继承。即,一个类不能同时直接继承多个父类。
而接口(interface)是抽象方法的集合,是声明性的。
所以当需要重用某些处理逻辑时,由静态方法组成的工具类(Utils)往往是解决方案之一,如 java.util.Collections。
(这方面,C# 的扩展方法有更漂亮的代码展现形式)

 

接口的 Default Method

从 Java 8 开始可以在接口中实现默认方法。以前很多工具类中的方法都适合被做成 default method。
谨慎使用此特性!!!

interface IA {
  default int func(int a, int b) {
    return a + b;
  }
}

class A implements IA{
  void x() {
    System.out.println(func(1,2));
  }
}

 

 

标记接口(Marker Interface)

标记接口是不包含方法声明的接口。它很容易被误用,如 Cloneable 接口。

有时候 注解(Annotation)更合适,而且其表达能力更强。

 

函数式接口

函数式接口是只有一个方法的接口。如果确定要将一个接口设计为函数式接口,建议用注解 @FunctionalInterface 标记。

 

多接口同名方法

方法签名完全相同

一个类同时实现的多个接口中存在签名完全相同的方法时,这些同名方法会在该类中合并为同一个方法。
(C# 中不会合并)

 

interface A {
  int func();
}

interface B {
  int func();
}

class C implements A, B {
  @Override
  public int func() {
    ...
  }
}

 

只有返回类型不同

一个类同时实现的多个接口中存在“同名同参,不同返回类型”的方法时,这些方法会在该类中冲突(无法通过编译)。
以下代码是不合法的:

interface A {
  int func();
}

interface B {
  String func();
}

class IllegalClass implements A, B {
  @Override
  public int func() {
    ...
  }
}

 

分享到:
评论

相关推荐

    Java 基础核心总结 +经典算法大全.rar

    接口和抽象类接口 抽象类异常 认 识 Exception 什么是 Throwable 常见的 Exception 与 Exception 有关的 Java 关键字 throws 和 throw try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层...

    Java核心编程技术源码

    Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。...

    java jdk-api-1.6 中文 chmd

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代...

    Java 基础核心总结_.zip

    从java概述》java开发环境配置》java基本语法》java执行流程》面向对象》访问控制权限》接口和抽象类》异常》内部类》集合》泛形》反射》枚举》I/O》注解》关于 null 的几种处理方式

    Java核心技术卷一基础知识第10版

    第10版根据Java SE 8全面更新,同时修正了第9版中的不足,系统全面讲解了Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。  本书共14章。第1章概述Java语言与其他程序设计语言不同的性能;...

    Java 基础核心总结

    java概述、开发环境配置、基本语法、执行控制流程、面向对象、方位控制权限、接口抽象类、异常、集合、泛型等

    java类源码-ComputerStore:一个简单的"电脑商店"Java源码,主要用来学习了解java的接口,抽象类以及类的继承关系

    从intel和AMD两款CPU中提取出抽象类CPU (同理硬盘提取出抽象类Disk) 比如CPU [ Intel i5 / 6核 / 1599元 ] [ AMD r7 / 8核 / 2599元 ] CPU公共特征有 名字name / 核心数coreNum / 价格price 同样Disk公共特征有 名字...

    Java基础核心总结.PDF

    1.java概述 2.java开发环境配置 3.java基本语法 4.java执行控制流程 5.面向对象 6.访问控制权限 7.接口和抽象类 8.异常 9.内部类 10.集合 11.泛形 12.反射 13.枚举 14.I/O 15.注解 16.Null值处理 17.思维导图

    JAVA_API1.6文档(中文)

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8...

    corejava基础重要知识点总结

    类:一组类型相同事物高度抽象之后的集合概念 创建对象的模板 -》 class 对象:类的一个具体的实例 例子: 人和范冰冰之间的关系? 类和对象 HelloKitty和猫之间的关系? 对象和类 引用:对象的名字 *:一个...

    Java高手真经 编程基础卷.part1.rar

    Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。...

    Java高手真经 编程基础卷.part3.rar

    Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。...

    Java高手真经 编程基础卷.part4.rar

    Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。...

    Java高手真经 编程基础卷.part2.rar

    Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。...

    Java面试突击-V3.0.pdf

    1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以 有非抽象的方法 2. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定 3. 一个类可以实现多...

    Java基础核心总结.pdf

    Java核心基础知识总结,含思维导图,包含Java基本语法,面向对象,接口和抽象类,异常,内部类,集合,泛型,反射,枚举,I/O,注解等Java基础核心知识,总结全面,内容丰富,欢迎下载。 如果对你有用,麻烦点个收藏...

    java api最新7.0

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 ...

    微服务系列第九季-Java中的封装、抽象类、接口和多态

    微服务应用是分布式开发的...第九季主要是给大家介绍一下:Java中封装的概念及步骤、Java封装类、Java抽象类的概念、继承抽象类、抽象方法、接口的概念、接口的声明与实现、接口的继承、多态的概念、多态的应用举例。

Global site tag (gtag.js) - Google Analytics