谈谈接口 0.0

news/2024/11/29 3:39:24/

目录

接口的概念

接口语法

接口的成员变量与方法

接口的使用

实现多个接口


接口的概念

在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等...

电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备。

电源插座插孔上,可以插:电脑、电视机、电饭煲...

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用!

那么在java中怎么定义接口呢?

在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。


接口语法

通过interface定义一个接口

interface IShape {}

接口的成员变量与方法

那么接口中的成员有哪些呢?

interface IShape {int a = 10;void draw();}

细心的小伙伴会发现-这个draw方法没有用abstract修饰为何能这样写呢?

这是因为你这样的话编译器会默认加上下面的东西:

interface IShape {public static final int a = 10;public abstract void draw();}

在编译器中我们也可以注意到这些是灰色的:

 因此我们可以总结:

接口中的成员变量默认是 public static final修饰的

接口中的成员方法默认是 public abstract修饰的

接口当中不能有普通的方法(java8开始可以有default和static方法,可以有具体的实现)

interface IShape {public static final int a = 10;public abstract void draw();public static void test1() {}default void test2() {}
}

接口的使用

接口类型是一种引用类型,可以认为比抽象类还抽象,因此是不能new一个对象的。但是可以用关键词 implements 来实现接口。(要重写接口当中所有的抽象方法)

如下:

 那么怎么调用呢?

接口通过向上转型和动态绑定


实现多个接口

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口

下面我们举个多接口例子:

我们先定义两个接口(跑,游泳),和一个抽象类(Animal)和一个Dog类

下面代码可以理解为:Dog是一个动物具有游泳的特性

//接口1
public interface IRunning {void running();}//接口2
public interface ISwimming {void flying();
}//Animal类
public abstract class Animal {public String name;public int age;public Animal(String name, int age) {this.name = name;this.age = age;}public abstract void eat();
}//狗类继承Animal类实现ISwimming,IRunning接口
//可以理解为Dog是一个动物具有游泳和跑的功能
public class Dog extends Animal implements ISwimming,IRunning{public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("吃狗粮");}@Overridepublic void swimming() {System.out.println("游泳");}@Overridepublic void running() {System.out.println("跑");}
}

下面演示怎么调用,写一个Test类调用。

public class Test {public static void test1(Animal animal) {animal.eat();}public static void test2(IRunning iRunning) {iRunning.running();}public static void test3(ISwimming iSwimming) {iSwimming.swimming();}public static void main(String[] args) {Dog dog = new Dog("汪汪队队长",10);test1(dog);test2(dog);test3(dog);}}

 


http://www.ppmy.cn/news/61652.html

相关文章

阿里云服务器配置选择流程(2023新版教程)

阿里云服务器ECS选购指南,阿里云百科分享2023阿里云服务器新手选择流程,选购云服务器有两个入口,一个是选择活动机,只需要选择云服务器地域、系统、带宽即可;另一个是在云服务器页面,自定义选择云服务器配置…

查询文件路径

1 问题 如何利用Java来查询文件的路径? 2 方法 1首先在类中利用main函数调用所有文件的和目录的代码。 2 然后开始写查询展示所有文件和目录的方法(运用了递归的思想) import java.io.File;import java.util.Arrays;import java.util.Scanner…

行业趣闻 | 在施工现场“打灰”,挺好的?

房地产市场的不景气对土木行业的冲击、某某大学土木工程专业招不到人、某央企施工人员因吐槽土木行业现状而被辞退…… 面对互联网上诸多对土木行业的调侃和流言,许多土木工程专业的同学变得迷茫了。 这个行业的实际情况究竟是怎样的? 图源网络 2018年10…

Java开发 - SpringCache初体验

前言 早些时候,博主介绍过Redis的使用:Java开发 - Redis初体验,Redie是基于缓存的一项技术,对于Redis,博主此处不再赘述,不了解的可以去看这篇文章,但Redis缓存并不是顶峰,本文要讲的内容就是Redis的辅助工具:SpringCache——的使用。有了SpringCache,Redis便可如虎…

22.Java多线程

Java多线程 一、进程和线程 进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生,发展到最终消亡的过程。多进程操作系统能同时达运行多个进程(程序…

Java 面试必问的线程池原理总结

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:大能老师 | 慕课网讲师 Java 线程池原理总结 (一)什么是线程池 线程池做的工作主要是控制运行…

MySQL基础(十四)视图

1. 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改&…

【软考高项笔记】第3章 信息系统治理(针对甲方)3.1 IT治理

第3章 信息系统治理(针对甲方) 3.1 IT治理 不同于管理,角度更高3.1.1 IT治理基础 目标价值 与业务目标一致 有效利用信息与数据资源 风险管理 管理层次 最高管理层 (定目标,战略) 执行管理层 &#xff08…