Java 接口的定义、接口的成语、接口的实现、接口与类的多继承、JDK1.8后新增方法、使用接口的注意事项
什么是接口?
接口是更加彻底的抽象,在JDK 1.8之前接口中只能是抽象方法和常量。
接口体现的是规范思想,实现接口的子类必须重写完接口的全部抽象方法。
接口的基本定义格式:
修饰符 interface 接口名称{...
}
JDK1.8后接口当中可以包含的组成部分:
1.抽象方法
2.常量
3.默认方法(Java 8)
4.静态方法(Java 8)
5.私有方法(Java 9)
1.默认方法: 其实就是我们之前写的实例方法。
只能用接口的实现类的对象来调用default void run() {System.out.println ("默认方法");
}2.静态方法:可以直接static修饰。默认会public修饰。
static void inAddr () {System.out.println("静态方法");
}3.私有方法:私有的实例方法。
private void go() {}
1.接口中定义一个抽象方法:
public abstract 返回值类型 方法名称(参数类型 参数名称);
- 注意:
1.接口中的抽象方法,修饰符如果写必须是:public abstract
2.接口中的抽象方法,修饰符可以省略不写,默认是:public abstract
3.抽象方法只有方法头,不能有方法体大括号。
public interface Animal {//定义了一个抽象方法,吃东西public abstract void eat();//定义了一个抽象方法,睡觉//省略了public abstract也照样是抽象方法/*public abstract*/ void sleep();
}
2.定义一个接口使用类
如果想要使用定义好的接口,必须要有一个“实现类”
- 定义实现类的格式:
public class 实现类名称 implements 接口名称{一定要覆盖重写所有的抽象方法
}
- 什么是覆盖重写(Override)的抽象方法?
1.将接口当中的抽象方法抄过来
2.去掉abstract关键字
3.写上大括号方法体
Cat就是Animal接口的实现类,Cat类实现了Animal类
public class Cat implements Animal{public void eat() {System.out.println("猫吃鱼");};public void sleep() {System.out.println("猫睡觉");};//这是一个Cat特有的方法,接口中并没有定义public void cathMouse() {System.out.println("猫抓老鼠");}
}
public class Dog implements Animal{public void eat() {System.out.println("吃骨头");}public void sleep() {System.out.println("狗睡觉");}//特有方法public void watchHouse() {System.out.println("狗看家");}
}
如何使用接口与实现类?
1.创建
接口名称 引用名 = new 实现类名称();2.调用
引用名.抽象方法名(参数);注意:
1.(接口隔离)左边是接口类型,只能调用接口当中定义好的内容,不能调用右侧实现类中特有的内容。
2.当调用接口中的抽象方法时,真正进行运行的是右侧new的时候类的具体方法内容。
3.调用的时候看左边,运行的时候看右边。
public class InterFace {public static void main(String[] args) {//创建:Animal cat = new Cat();//调用接口当中定义好的抽象方法cat.eat(); //猫吃鱼cat.sleep(); //猫睡觉// cat.catchMouse(); 错误,无法调用右侧实现类专有的方法,只能调用接口的方法}
}
使用接口作为左侧类型的好处所在:
屏蔽掉了右侧的个性特有内容,达到隔离统一的目的。
public class InterFace {public static void main(String[] args) {Cat cat = new Cat(); // 创建一只猫 method(cat);//间接使用eat和sleep方法Dog dog = new Dog();// 创建一只狗method(dog);}//使用一个自定义的类作为参数类型public static void method(Cat cat) {cat.eat();cat.sleep();}public static void method(Dog dog) {dog.eat();dog.sleep();}
}
接口的成员特点
- 成员变量
只能是常量
默认修饰符:public static final - 构造方法
接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在
一个类如果没有父类,默认继承自Object类 - 成员方法
只能是抽象方法
默认修饰符:public abstract
面向接口编程:
如果使用的功能,接口已经可以满足,那么就不在乎具体的类是谁,只在乎接口即可。
使用接口作为左侧类型的好处所在:
屏蔽掉了右侧的个性特有内容,达到隔离统一的目的。
public class InterFaceBetter {public static void main(String[] args) {Cat cat = new Cat(); // 创建一只猫 method(cat);//间接使用eat和sleep方法Dog dog = new Dog();// 创建一只狗method(dog);}//使用接口作为参数类型,就不用区分到底是猫还是狗public static void method(Animal animal) {animal.eat();animal.sleep();
// animal.watchHouse(); 错误,无法调用狗的专有方法
// animal.catchMouse(); 错误,无法调用猫的专有方法}}
接口与类的多继承
类与类是单继承关系:一个类只能继承一个直接父类。
类与接口是多实现关系:一个类可以同时实现多个接口。
接口与接口是多继承关系:一个接口可以同时继承多个接口。
使用接口的注意事项
如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突,
原因是 只能通过各自接口名访问静态方法。当一个类继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。
当一个类实现多个接口时,多个接口中存在同名的默认方法。
实现类必须重写这个方法。接口中没有构造器,不能创建对象。
接口是更彻底的抽象,连构造器都没有,自然不能创建对象。
Java 接口的定义、接口的成语、接口的实现、接口与类的多继承、JDK1.8后新增方法、使用接口的注意事项相关推荐
- java int64如何定义_java – 具有两个int属性的自定义类的hashCode是什么?
在 Java中,我有一个类表示一个具有int坐标的点 public class Point { int x = -1; int y = -1; public Point (int xNew, int ...
- java对象流定义_Java 对象流的用法,将自定义类数组写入文件中
FileInputStream和FileOutputStream可以将类,数组,等写入如文件并读取. public class UserList implements Serializable{ pu ...
- java如何枚举定义一个数组_Java中如何将字符枚举类变成一个数组
( light. class ); currenummap.put(light. red , " 红灯 " ); currenummap.put(light. green , &q ...
- java final类的写法_重拾JavaSE基础——抽象类、接口、代码块、final和枚举
今天继续回顾Java基础,有些东西用得不多,大家看看知道语法就好 主要内容 抽象类 抽象方法 抽象方法的写法 抽象方法是否可以私有化 抽象类的特征 抽象类有无构造器,能否实例化对象 抽象类的结构 抽象 ...
- java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...
- java类接口实验_实验3_Java类的继承和接口的定义和使用
本次有三题:学会Java类的继承.接口的定义和使用 // Ex3_1.java /** * 题目要求: * 修改例5.7(P95)实现在页面中拖动鼠标画出矩形,矩形的对角线为点击并拖动鼠标形成的直线线 ...
- java接口如何定义常量 c_java接口定义常量研究
背景 和同事讨论到,在接口中定义常量的问题,引发了争论,即,假如在接口中定义变量,是否需要用static来限定的问题,或者说用static和不用static会有什么区别. 引论 package spr ...
- java中接口的定义与实现
1.定义接口 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,当中接口体由常量定义和方法定义两部分组成.定义接口的基本格式例如以下: [修饰符] in ...
- java批量删除接口怎么定义_教你在Java接口中定义方法
基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...
最新文章
- [LeetCode]Gray Code
- 宁波大学计算机网络实验五,宁波大学计算机网络实验答案.doc
- nginx的函数调用
- wps怎么投递简历发到boss直聘_央视新闻联合BOSS直聘带“岗”年薪超82亿元
- 一个小技巧 禁止浏览器弹出Alert
- icoding复习1,2
- php 随机在文章中添加锚文本_SEO站长布局锚文本时的7大注意事项
- 2020年线上农产品消费趋势报告
- Linux内存管理:kmemcheck介绍
- 【鱼眼镜头4】[鱼眼畸变模型]:四阶多项式模型
- python连接服务器完整过程
- 什么是有监督学习?看这里。
- 什么是用户实体行为分析(UEBA)
- python基础篇{数据类型}
- 网页打开QQ链接,进行临时会话
- wms地图绘制工具_三维离线地图-三维地图开发,三维地球,三维可视化开发
- ibm刀片服务器虚拟化,IBM刀片服务器虚拟化方案
- 年度工作计划和工作总结PPT模板
- 服务器虚拟化有哪些方面,服务器虚拟化技术有哪些
- java 基本数据类型所占字节数及其范围