package com.day29.test;
public class Test {
public static void main(String[] args) {
System.out.println("接口");
// 有的时候要多继承父类
// 但是java只支持单继承
// 所以有了接口 就可以实现 多继承这个状态
// 但是接口 子类 不能叫继承接口 而是叫 实现接口
//而他们之间不是子父的关系
// 而是有一些共同特征
// 例如 鼠标 键盘 打印机 等等 都支持USB链接
// 接口是一种规范 定义的是一种规则
// 体现了现实世界中 如果你是 ... 则必须能...的思想
// 继承是一个是不是的关系 而接口实现则是 能不能的关系
// 接口本质是锲约 标准 规范 就像我们的法律一样
// 制定好后大家都要遵守
// 接口 举例
// 可以飞 攻击性
//
// 飞机 子弹 风筝 热气球 这些都可以飞
// 但是 子弹 既可以飞 也有攻击性
// 接口的扩展性更强
//测试接口的功能
Plane plane=new Plane();
plane.fly();
}
}
//接口的定义
//1. 接口 使用 interface 定义
// 2.接口和类是并列的结构
//3.如何定义接口 : 定义接口的成员
// JDK7 及以前 :
// 只能够定义全局常量和 抽象方法
// 全局常量 public static final
// 抽象方法: public abstract
// JDK8 : 除了够定义全局常量和 抽象方法 还可以定义静态方法和默认方法
//4. 接口中是不可以定义构造器 意味着接口不能实例化
//5. 在java开发中 让类实现接口里的方法 使用关键字 implements 建立关系
// 如果实现类覆盖了接口中的所有抽象方法 则此类可以实例化
// 如果实现类中没有覆盖了接口中的抽象方法 此类必须定义为抽象类 abstract
// 对于实现类中与接口建立关系后 实现类中实现接口中的方法
// 我们更习惯叫他 '实现方法'
// 对于继承了抽象类 子类去实现抽象类中的抽象方法
// 我们一般叫做 '重写方法'
// 6. java 类中可以实现多个接口 弥补了 java的单继承的局限性 :下面 子弹类 举例说明
// 7. 接口和接口之间可以继承 而且可以多继承
// 类与类之间 叫做 继承
// 类与接口之间 叫做 实现
// 接口与接口之间 叫做 继承
// ********************************
// 8. 接口的具体使用 体现了多态性
// 9. 接口 实际可以看作一种规范
//
// 经典面试题: 抽象类与接口有哪些异同?
//
interface Flyable{
//全局常量
// 在接口定义中 public static final 这些可以省略
// 默认是存在的
public static final int MAX_SPEED=7900; //第一宇宙速度
public static final int MIX_SPEED=1;
//抽象方法
public abstract void fly();
// 在接口定义方法 public abstract 也可以省略
public abstract void stop();
}
//攻击性的类
interface Attackable{
void attack();
}
//子弹类 实现了多个接口
//如果又有继承 又有实现接口
// 写法 先继承 后 实现这中
class Bullet extends Object implements Flyable,Attackable{
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("攻击");
}
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("飞");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("停止");
}
}
//飞机类
class Plane implements Flyable{
//对于实现类中与接口建立关系后 实现类中实现接口中的方法
// 我们更习惯叫他 实现方法
// 对于继承了抽象类 子类去实现抽象类中的抽象方法
// 我们一般叫做 重写方法
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("通过引擎起飞");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("驾驶员 减速停止");
}
}
//**********************
interface aa{
}
interface bb{
}
//cc 多继承了 aa ,bb
interface cc extends aa,bb{
}
//为什么 要使用 接口这种规范来是设计程序
//例如
//现在java 去操作数据库
//数据库种类有 mysql oracle sqlserver 等等
//在没有接口这种规范的时候
//实际 Java 可以之间操作 mysql 或者是 oracle
//如果 mysql 和 oracle 实现增删改查的方式不同 或者实现的方法名不同
//比如
//mysql 实现插入数据操作方法 叫做 add
//oracle 实现插入数据操作 叫做方法 insert
//这样对于我们程序员来说
// 如果今天你要去操作 mysql 你要去学习 mysql中的方法
// 如果明天你要去操作 oracle 你就要去学习oracle中的方法
// 这样会非常的累 而且不好记住
// 所以在程序设计的时候 JAVA大神们就会利用 接口这种规范和面向对象的多态性
// 把JAVA 去往各种数据库路上 架起了一个 桥梁(JDBC) 他们去定义数据库的规范
// 然后数据库实现类 必须遵循这个规范来开发具体实现的方法
// 程序员在调用数据库就不必考虑到底是mysql 或者是oracle
// 程序员直接在这个桥梁上按照规范调用方法 即可实现各种数据库的操作
// 这样对于调用数据库操作 大家只用记住接口定义的方法即可
// 无需再去一一学习底层数据库的操作 大大提高了开发效率
// java -> JDBC(这里封装了各种数据库操作的接口)-> oracle/ mysql /sqlserver
// 数据库类中实现操作数据库的方法 必须按照接口的规范开发
// (在定义规范的时候不清楚mysql/oracle 具体实现的逻辑 所以只能定义抽象方法 具体的实现通过‘数据库实现类’来实现 ) [多态的体现]
// (我把规矩定在这边,在这里操作 必须都要遵守我的规范 )
// (比如方法名 我规范 使用‘add’单词 命名插入操作)
// (所有数据库实现具体方法必须都要按照我的规范声明)
// 在开发中体会 面向接口编程的思想java 接口(interface) 语法的使用和详解
原创
©著作权归作者所有:来自51CTO博客作者json____的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
TypeScript 接口 interface 使用详解
今天来分享 Typescript 中接口的使用~
typescript 字符串 值类型 -
TypeScript Interface 接口详解
接口是一种定义对象结构、函数签名或类结构的方式,它描述了对象应该具有的属性和方法。data: T;id: string;// 使用${data : T;} // 使
typescript ubuntu javascript User 抽象方法 -
@interface使用详解
@interface不是接口是注解类,在jdk1.5之后加入的功能,使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation
java 开发语言 注解 注解interface 自定义注解 -
Java接口interface
Java接口interface1、多个无关的类可以实现同一个接口。2、一个类可以实现多个无关的接口。3、与继承关系类似法。接口定义的举例:pu
java 接口 抽象方法 设计模式 System -
Java - interface 接口
Java - interface 接口
java 开发语言 修饰符 实例化 抽象方法 -
Java接口(Interface)
成员变量接口当中可以定义成员变量 但是必须使用public static final三个关键字修饰从效果上看 这其实就是接口的常量格式:public stati
接口 java 默认方法 System 抽象方法 -
Linux 远程Ubuntu服务器本地部署大模型 EmoLLM 中常见的问题及解决方案 万字详解
Linux——在远程Ubuntu服务上部署EmoLLM大模型,遇到的一些问题,排错流程及解决方案。
服务器 linux 运维 ubuntu 远程部署 -
线段树;区间求和优化
n];//原是数组 第二种:结构体 void pushup(int r ...
子节点 线段树 区间更新
















