接口就是规范,定义的是一组规则和约束

普通类: 具体的实现,使用修饰符class进行定义类,使用extends进行继承
抽象类: 可以有具体的实现也可以有规范,不但不能通过new进行实例化对象,使用修饰符abstract定义,使用extends继承
接口: 只有规范,无法写方法。使用interface修饰符声明接口,使用implement关键字。面向接口编程

接口的定义

package Demo3;
public interface Interface {}

接口中定义方法

在接口中定义方法无法像在类中定义方法一样

接口中定义方法直接写返回值类型和方法名即可,接口中的属性和方法都是抽象的

package Demo3;
public interface Interface {void demo();
}

接口中的方法及时不写修饰符,默认都是public abstract修饰

定义方法

package Demo3;
public interface Interface {String add(String name);        //在接口中使用返回值类型和方法名以及形式参数即可定义方法,默认修饰符是public abstractString del(String del);
}

接口只有定义没有具体的实现,需要通过实现类来实现,一般实现类使用Impl结尾

创建实现类,并使用implements关键字实现接口

class ServiceImpl implements Interface{  //实现接口,类似于类的继承}

实现接口的类需要重写接口里的方法,这点跟抽象类相似

重写方法:

package Demo3;
public interface Interface {String add(String name);    //定义方法String del(String del);
}
class ServiceImpl implements Interface{@Override       //重写方法public String add(String name) {return null;}@Overridepublic String del(String del) {return null;}
}

继承和接口的关系

继承只能是单继承,一个父类可以有多个子类,但一个子类只能有一个父类。接口是属于 [伪] 多继承的,相当于是一个子类可以有多个父类

package Demo3;
public interface Interface {String add(String name);String del(String del);
}
interface TimeInt{int age(int Age);
}
class ServiceImpl implements Interface,TimeInt{
//可以实现多个接口@Overridepublic String add(String name) {return null;}@Overridepublic String del(String del) {return null;}@Overridepublic int age(int Age) {return 0;}
}

如何使用接口

接口不能使用new实例化

package Demo3;
public class demo008 {public static void main(String[] args) {Impl I =new Impl();I.eat();I.play();I.sleep();}
}
interface Dog{public void eat();public void play();public void sleep();
}
class Impl implements Dog{@Overridepublic void eat() {System.out.println("Dog eat");}@Overridepublic void play() {System.out.println("Dog play");}@Overridepublic void sleep() {System.out.println("Dog sleep");}
}

执行结果:

Dog eat
Dog play
Dog sleep

接口案例:小滨不做注释了,感兴趣的小伙伴可以看一下

package Demo3;
public class demo008 {public static void main(String[] args) {Moblie M=new Moblie();M.mp3();M.mp4();M.mp5();radio r =new radio();r.mp3();television tv=new television();tv.mp3();tv.mp4();}
}
interface mp3{String mp3();
}
interface mp4{String mp4();
}
interface mp5{String mp5();
}
class Moblie implements mp3,mp4,mp5{public String This="手机";@Overridepublic String mp3() {System.out.println(this.This+"可以播放mp3");return null;}@Overridepublic String mp4() {System.out.println(this.This+"可以播放mp4");return null;}@Overridepublic String mp5() {System.out.println(this.This+"可以播放mp5");return null;}
}
class radio implements mp3{public String This="收音机";@Overridepublic String mp3() {System.out.println(this.This+"可以播放mp3");return null;}
}
class television implements mp3,mp4{public String This="电视机";@Overridepublic String mp3() {System.out.println(this.This+"可以播放mp3");return null;}@Overridepublic String mp4() {System.out.println(this.This+"可以播放mp4");return null;}
}

执行结果:

手机可以播放mp3
手机可以播放mp4
手机可以播放mp5
收音机可以播放mp3
电视机可以播放mp3
电视机可以播放mp4

接口中的属性

接口中默认的属性是常量,使用修饰符 public static final进行默认修饰

接口小结:

  1. 接口是一组约束、规则
  2. 接口定义方法可以实现多个,使用implements关键字进行实现
  3. 接口中的方法默认使用的是public abstract进行修饰
  4. 接口中的属性默认使用的是public static abstract修饰
  5. 接口中没有构造方法,不能使用new实例化调用
  6. 使用接口必须重写里面的方法

java全栈系列之JavaSE-面向对象(接口定义与实现)042相关推荐

  1. java全栈系列之JavaSE--数组的定义和创建023

    数组 数组的定义 数组是相同类型数据的有效集合 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成 数组中每一个数据成为数组元素每个数组元素可以通过下标来访问他们 在main方法里面就有 ...

  2. java全栈系列之JavaSE--冒泡排序028

    冒泡排序是在一组数组中将相邻的两个元素进行比较,可以按由大到小或者由小到大的循序排列, 冒泡排序示意图: 每循环一次相邻的两个数进行大小比较,若由小到大的循序则大的数据在小的数据右侧 冒泡排序流程图 ...

  3. Java全栈系列笔记

    Java全栈系列笔记 全部文档.项目.源码: github:https://github.com/name365/Blog-Java 码云:https://gitee.com/yang365/Blog ...

  4. Java全栈学习day05(面向对象02)

    1.继承 继承的概念 实现代码的重用,子类继承父类的一切属性和方法(除了构造方法),父类的私有属性.方法不能直接使用,需要get和set. package com.test;public class ...

  5. java全栈系列之JavaSE-面向对象(封装详解)034

    封装数据的隐藏 通常,应禁止直接访问一个对象中的数据的实际表示,而应通过操作接口来访问,这种称为信息隐藏 封装的意义: 提高数据的安全性,保护数据 隐藏代码的实现细节 统一接口 系统的可维护性增加了 ...

  6. java全栈系列之JavaSE-面向对象(方法的定义与调用)030

    java面向对象编程 面向对象&面向过程 前言: 之前的代码大多数都是属于面向过程的,在程序中有main()方法也叫主方法,程序会由上至下执行main()里面的内容.程序里的方法:例如编写一个 ...

  7. java全栈系列之JavaSE--数组的三种初始化方法及内存分析024

    java内存分析 堆中存放new出来的对象和数组,存放具体的值的变量存放在栈里面 在定义和创建数组的时候内存发生了什么? 当用户定义了一个数组,例如:int [ ] Array;只是定义了一个数组没有 ...

  8. java全栈系列之JavaSE-面向对象(方法重写)037

    子类在调用父类的私有方法中不能直接调用,但是可以通过get方法进行调用,修改属性的值可以通过set方法进行修改.而子类想要修改父类中的方法可以使用方法重写进行操作. 方法重写与之前的方法重载不同 回顾 ...

  9. java全栈系列之JavaSE-面向对象(继承详解)035

    类的继承 java三大特性之一的继承,指的是子类继承父类的属性和方法,java类中只有单继承没有多继承,比如说:一个父亲(父类)可以有多个儿子(子类),但是一个儿子(子类)只能有一个父亲(父类) 在类 ...

最新文章

  1. bat给文件追加换行内容
  2. asp.net控件库FineUI使用入门图解
  3. python opencv 4.1.0 cv2.convertScaleAbs()函数 (通过线性变换将数据转换成8位[uint8])(用于Intel Realsense D435显示depth图像)
  4. 盘点程序猿经常说的那些行话,你了解吗?
  5. 在Apache Hadoop(多节点群集)中运行Map-Reduce作业
  6. 12项目综合变更设置
  7. 怎么从mysql注册表删除用户_mysql 创建和删除用户
  8. 国际上首次报道的非人灵长类胰岛衰老的单细胞转录组图谱
  9. linux安装mysql默认的配置文件_[转]关于Linux安装mysql默认配置文件位置
  10. AD19无法生成PCB_PCB制造拥抱AI
  11. javascript创建对象过程
  12. 解决mysql客户端中文显示乱码
  13. mnist手写数字辨识实战——改进的LeNet
  14. 智慧城管管理平台和监控系统建设方案
  15. 重庆大学计算机学院考研,2021年重庆大学计算机学院考研指南
  16. C语言之结构体 共用体 枚举 typedef
  17. Excel的FIND函数及其用法
  18. Laravel-hyn/multi-tenancy多租户扩展的使用
  19. 物联网场景下,基于无线宽带的空中组网研究
  20. 面试积累-Redis-使用过Redis分布式锁么,它是怎么实现的?

热门文章

  1. 2021年新手做seo怎么做,几大绝招快速上排名收录
  2. XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)
  3. 全网通报:数模国赛作弊的后果
  4. 计算机语言 帕斯卡,帕斯卡命名法
  5. uniapp 拉起微信客服功能
  6. 1为数据库查询的数据中加一排序号,2判断为查询出来的字段赋值
  7. Generative Adversarial Text to Image Synthesis 论文翻译精校版
  8. 基于深度学习的图像超分辨率重建
  9. python第四章上机练习 简单代码
  10. [转]把自己从一个疯狂下载者变成一个学习者