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

《从C/C++到Java入门指南》- 28.接口

接口

对比抽象类

抽象类我们知道是一个类,但是里面的方法都是空的,需要由抽象类的子类继承后来实现,可以说抽象类定义了一种类型类的规范。

接口也是一样的东西,接口也是一种抽象的载体,只定义方法名,相当于是定义了一种规范,需要被别的类来实现。

区别在于,一个类可以实现很多接口,但抽象类只能被子类实现。

接口的强大之处在于把方法从类中剥离出来,更加的模块化,更加自由。

定义接口

public interface Myinterface {
	public void draw();
}

实现接口

实现一个接口方法,这个方法打印一句话。

public interface Myinterface {
	public void draw();
}

class Myclass implements Myinterface {
	@Override
	public void draw() {
		System.out.println("Drawing!");
	}
}

public class Main {
	 public static void main(String args[]) {
		 Myclass my = new Myclass();
		 my.draw();
	 }
}

接口继承

接口之间也可以相互继承,使用extends关键字。

public interface NewInterface extends Myinterface {
	public void hello();
}

这样子接口的方法体实际上会多一个。

接口的多重继承

由于接口的特殊性,接口可以进行多重继承,也就是继承多个接口。

interface FatherInterface {
	public void work();
}

interface MotherInterface {
	public void make_up();
}

interface childInterface extends FatherInterface, MotherInterface {
	public void cry();
}

public class Main {
	 public static void main(String args[]) {
		 System.out.println("Run");
	 }
}

接口的默认方法

interface DefaultInterface {
	default void run() {
		System.out.println("Run");
	}
}


class A implements DefaultInterface {
	@Override
	public void run() {
		DefaultInterface.super.run();
	}
}

public class Main {
	 public static void main(String args[]) {
		 A a = new A();
		 a.run();
	 }
}

可以看到,这里定义了一个接口,在接口中有一个默认方法。类A实现了该接口并且调用了接口的默认方法。

接口的静态方法

所谓接口静态方法就是static方法。

interface DefaultInterface {
	static void run() {
		System.out.println("Run");
	}
}

public class Main {
	 public static void main(String args[]) {
		 DefaultInterface.run();
	 }
}

顾名思义,静态方法嘛,可以使用接口来直接调用。


http://www.kler.cn/a/287875.html

相关文章:

  • 37.超级简易的计算器 C语言
  • PostgreSQL TRUNCATE TABLE
  • IPv6 NDP 记录
  • Chrome和Chromium的区别?浏览器引擎都用的哪些?浏览器引擎的作用?
  • v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条
  • 游戏引擎学习第八天
  • 海力士A-DIE颗粒内存条震撼发布:毁灭者星际战舰DDR5内存条登场
  • 快速了解NoSql数据库Redis集群
  • 怎样将所有照片拼接在一起?教你5种拼图技巧
  • 记一次事务里发普通消息的线上问题排查过程--图文解析
  • Jenkins配置使用LDAP的用户和密码登录
  • 前端【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail
  • 行为型设计模式-中介者(mediator)模式-python实现
  • Docker容器详细介绍
  • 传统CV算法——图像特征算法概述
  • 刷题记录(2)
  • 强化学习实践(一):Model Based 环境准备
  • Java入门:07.Java中的面向对象
  • DRF序列化_data传参
  • AI 通过python脚本自动化导出交易软件某一天的分笔成交明细
  • 0基础轻松玩转.NET Web API 8.0【CICD】项目实战
  • FPGA与高速ADC接口简介
  • 谷粒商城实战笔记-275~276-商城业务-订单服务-订单确认页完成
  • 两阶段最小二乘法2SLS和Heckman两阶段回归Stata代码(附示例数据)
  • Hadoop的HA配置与实现(ZooKeeper)
  • 华为设备默认密码