当前位置: 首页 > news >正文

Java中继承接口和实现接口的区别、接口和抽象类的区别、并理解关键字interface、implements

初学者容易把继承接口和实现接口搞混,专门整理一下,顺便简单介绍一下interface、implements关键字。

继承接口和实现接口的区别、接口的特点

  1. 继承接口是说的只有接口才可以继承接口,是接口与接口间的。实现接口是说的接口与类之间,类不可以继承接口,但类可以实现接口。
  2. 一个接口可以继承一个或多个接口。 接口继承接口可以不实现父接口中的方法,可以声明自己的新方法
public interface InterfaceA extends InterfaceB,InterfaceC{}
  1. 一个实现类可以实现一个或者多个接口。 类实现接口时,一定要实现接口中声明的方法,如果接口中没有定义抽象方法则不需要,但是要注意,类实现了一个接口A,如果B是A的父接口,且B中有抽象方法,则该类必须实现A和B中的所有抽象方法。
public class InterfaceImpl implements InterfaceA,InterfaceB{}
  1. 一个子类可以继承一个父类的同时实现一个或者多个接口(一个类只能继承一个类,不能继承多个类)
public class Zi extends Fu implements  InterfaceA,InterfaceB{}
  1. 抽象方法只能定义在抽象类中,抽象类实现接口,可以不实现接口中的抽象方法。

接口和抽象类的区别

相同点

  1. 都位于继承体系的顶端,用于被其他类实现或者继承
  2. 都不能new
  3. 都包含抽象方法,其子类或者实现类都必须重写这些抽象方法

不同点

  1. 抽象类:一般作为父类使用,可以有成员变量,构造,成员方法,抽象方法等
  2. 接口:成员单一,一般抽取接口,抽取的都是方法,视为功能的大集合
  3. 类不能多继承,但是接口可以多继承

下面来详细介绍下接口及其中的关键字

接口

接口是一个引用数据类型,是一种标准规则,用关键字interface来实现。

interface

下面是定义接口

public interface 接口名{ }

implements

implements是类用来实现接口的关键字

使用:

  1. 实现类实现接口
  2. 重写接口中的抽象方法
  3. 创建实现类对象(接口不能直接new对象)
  4. 调用重写的方法
public interface Animal{public abstract void eat();
}
public class Tiger implements Animal{@Overridepublic void eat() {System.out.println("老虎吃东西");}
}

接口中定义的成员

一、成员变量

final代表最终的,被它修饰的变量,不能二次赋值,可以视为常量

public static final 数据类型 变量名 =

特点
1、不写public static final 默认也有
2、接口名直接调用
3、被static final修饰的成员变量需要手动赋值
4、习惯上我们会将static final修饰的成员变量名大写

public interface Animal{public static final int NUM1 = 666;int NUM2 = 666;//不写public static final 默认也有
}
public class Test {public static void main(String[] args) {System.out.println(Animal.NUM1);}
}

二、抽象方法

格式:

public abstract 返回值类型 方法名(形参);

使用:

  1. 定义实现类,实现接口
public interface Animal{public abstract void eat();String drink(); //不写public abstract 默认也有
}
  1. 重写抽象方法
public class Tiger implements Animal{@Overridepublic void eat() {System.out.println("老虎吃东西");}@Overridepublic String close() {return "老虎喝水";}
}
  1. 创建实现类对象,调用重写的方法
public class Test01 {public static void main(String[] args) {Mouse tiger= new Tiger();tiger.eat();String result = tiger.drink();System.out.println("result = " + result);}
}

三、默认方法

格式:

  public default 返回值类型 方法名(形参){方法体return 结果}

使用:

  1. 定义实现类,实现接口
public interface Animal {//默认方法public default void methodDef(){System.out.println("我是默认方法");}
}
  1. 默认方法重写,可以不重写
public class Tiger implements Animal{@Overridepublic void methodDef(){System.out.println("我是默认方法");}
}
  1. 创建实现类对象,调用默认方法
public class Test {public static void main(String[] args) {Mouse tiger = new Tiger();tiger.methodDef();}
}

四、静态方法

格式:

public static 返回值类型 方法名(形参){方法体return 结果
} 

使用:接口名直接调用

public interface Animal {//静态方法public static void methodStatic(){System.out.println("我是静态方法");}
}
public class Test {public static void main(String[] args) {Animal.methodStatic();}
}

默认方法和静态方法可以作为临时加的一个小功能来使用。

http://www.lryc.cn/news/391325.html

相关文章:

  • Excel为数据绘制拆线图,并将均值线叠加在图上,以及整个过程的区域录屏python脚本
  • 易保全推动区块链应用与AI融合创新发展
  • C++(Python)肥皂泡沫普拉托边界膜曲面模型算法
  • VBA打开其他Excel文件
  • 模拟 ADC 的前端
  • tls各个版本的安全性介绍
  • PHP家政服务预约单开版微信小程序系统源码
  • 数据增强:目标检测算法中的性能提升利器
  • KVB交易平台 :市场迎来新热潮!铜价会持续上涨吗?
  • React@16.x(44)路由v5.x(9)源码(1)- path-to-regexp
  • C#面:String str=new String(“a“)和String str = “a“有什么区别
  • CS算法(二)—— 斜视SAR点目标仿真
  • 2024亚洲国际餐饮展览会(北京餐饮展|火锅展|预制菜展会)
  • 【RabbitMQ问题踩坑】RabbitMQ设置手动ack后,消息队列有多条消息,只能消费一条,就不继续消费了,这是为什么 ?
  • 深度解码:需求跟踪的艺术与实战应用
  • 数据结构——树的基础概念
  • TimerManager和Timer
  • 手写Spring-MVC之前后置处理器与异常处理、数据库框架
  • 学习笔记(linux高级编程)11
  • vite+vue3+nginx配置统一公共前缀
  • android 国内下载Gradle源
  • mysql8一键安装脚本(linux) 拿走即用
  • C# 开发Winform DataGridView的增删改查实战
  • CentOS 7镜像列表服务下线,还想继续使用该怎么办?
  • 代码随想录训练营第二十八天 122买卖股票的最佳时间II 55跳跃游戏 45跳跃游戏II 1005K次取反后最大化的数组和
  • 在node环境使用MySQL
  • spdlog一个非常好用的C++日志库(四): 源码分析之logger类
  • 逻辑这回事(七)---- 器件基础
  • 中俄汽车产业链合作前景广阔,东方经济论坛助力双边合作与创新
  • 第六篇:精通Docker Compose:打造高效的多容器应用环境