java中接口知识点大总结
2024-10-07 00:51:29
接口的确很不好理解!!!!!那我来好好总结一下:
首先要理解接口是一个独立存在的,和类是不一样的东西,所以,直接用接口的定义是:
访问权限控制符 interface 接口名 [extends 接口列表] {
常量;//接口中的变量都是默认以public static final修饰的
抽象方法;//接口中的方法默认都是以public abstract修饰的,,注意!!!abstract 和private final static 并存
内部类;//接口中可以有内部类
静态方法;//jdk8支持
默认方法;//jdk8支持
}
package com.xt.imp.test; public interface Animals { public static final int I=0; public abstract void eat(); class heart{ } public static void sleep() { } public default void work() { }
}
访问权限控制符:只能是public 和友好的 接口名和public 修饰的接口名一致
[extends 接口列表]代表:接口可以多继承接口,不能 继承类,对比之前的类只能单继承类
package com.xt.imp.test; public interface IA extends IMammal,IB {//接口可以多继承接口,不能 继承类,对比之前的类只能单继承类 } interface IB{//接口前面的访问控制符只能是public 友好的,public修饰的只能在单个文件里 }
接口中没有构造方法,而抽象类有构造方法,抽象类不能被实例化,但是可以继承其构造方法
接口中没有 静态代码块,非静态代码块
类可以 实现多个接口。
实现接口中的抽象方法,必须严格按照重写的规则
package com.xt.imp.test; public class Whales implements IMammal,Animals {//类可以实现多个接口 @Override
public void move() {
System.out.println("移动。。。");
}
public static void main(String[] args) {
System.out.println(IMammal.i);
} //实现接口中的抽象方法,必须严格按照重写的规则
@Override
public void eat() { } }
如果一个类实现了一个接口,但但没有实现接口中的所有抽象方法,那么这个类必须是abstract类。
如果多个接口中定义了相同的抽象方法,则在实现类中只实现其中一个即可
接口回调描述的是一种现象:接口声明的变量指向其实现类实例化的对象,那么该接口变量就可以调用接口中的抽象方法。
接口没有构造方法,不能创建自己的对象,但是可以引用实现类的对象
package com.xt.imp.test; public class Studens implements IMammal { public static void main(String[] args) {
IMammal im = new Studens();
System.out.println(im.i);
im.move();
} @Override
public void move() {
System.out.println("移动。。");
}
}
函数式接口:
package com.xt.imp.test; @FunctionalInterface
public interface FunctionInterface { void ran();
}
最新文章
- HDU1242 BFS+优先队列
- ArcEngine拓扑
- css的小问题总结
- C#学习之Linq to Xml
- C#设计模式(8)——桥接模式(Bridge Pattern)
- 基于Flot可放缩的折线图
- php目录文件下有php-ini-development和php.ini-production。
- JavaScript实现数组转置
- iOS 9的新内容
- 终于解决了我的DISCUZ 无法连接到您的服务器,可能您的服务器处于防火墙后端 论坛云平台的问题~
- 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b
- MySQL单列索引和组合索引的区别介绍
- CFileDialog 打开文件夹文件 保存文件夹文件
- EasyUI - 一般处理程序 返回 Json值
- ASP.NET Core2.2 多用户验证和授权
- A - Zebras
- httpSession的正确理解
- 用lua实现ByteArray和ByteArrayVarint
- jQuery因mouseover,mouseout冒泡产生的闪烁问题
- 【MySQL-123】MySQL8.0.12 安装于Win10
热门文章
- DB 分库分表(1):拆分实施策略和示例演示
- koa 基础(四)get 传值 以及获取 get 传值
- android canvas drawtext 字高
- ftp列出具体目录的所有目录,和目录按照文件类型列出
- 只需体验三分钟,你就会跟我一样,爱上这款Toast
- 左键双击关闭pagecontrol中的一个分页即一个tabsheet,功能像遨游浏览器一样
- 【React自制全家桶】四、React中state与props的分析与比较
- Centos7 Devstack [Rocky] 重启后无法联网
- 1-2、kubernetes架构概述和kubernetes基础概念
- Redis 几个类型常用命令