/*********************************什么是接口*************************/
//1、硬件接口:指的是两个硬件设备之间的连接方式,硬件接口既包括物理上的接口,还包括逻辑上的数据传送协议
//2、软件接口:程序代码,特殊的类,表示一种范围,(java中)是具有的N个方法的特征集合
//eg:在封装之前 显示器封装了很多电子元件 最终向外报漏的数据交互的孔-->接口 (为了实现设备和设备之间的桥梁)
// 在java中,接口表示一种规范的/约束/要求实现者必须遵循该规范:用来约束使用者该怎么做
//硬件当中的USB就是一个接口的抽象概念,
//定义:接口只是定义了类的应当遵循的规范,却不关心这些类的内部数据和其功能的实现细节,站在程序的角度上说,接口只规定了类必须好提供的方法,从而分离了规范和实现,增强了系统的拓展性和可维护性。
/*********************************面向对象的编程*************************/
//接口和实现类体现了真正的多态
/*********************************java中的接口*************************/
//专家:多个抽象类的抽象就是接口 (其实接口就是抽象类的一种 在.java文件反编译的class文件当中我们可以看到 interface IWalkable == abstract interface IWalkable)
//在java中最小的程序单元就是类 接口就是一个特殊的类 、java中的接口表示规范,用于定义一组抽象方法,要求实现类必须实现该方法并提供方法实现
//定义类语句:[pubilc] class 类名{}
//定义类语句:[pubilc] interface 接口名{};在这里还没考虑接口的父接口等等**
//接口起名问题:表示具有某些能力的,有人习惯以able/handler结尾 有的公司或者个人习惯以i打头,表示接口。
/*********************************java中的接口需要的成员*************************/
//1、接口中没有构造器 ,推论L接口是不能new的 (不能创建对象) 接口中不能定义普通方法
//2、接口中定义的成员变量 实质是全局静态常量 默认是public static final 来修饰
//3、接口中定义的方法都是公共的抽象方法 默认使用public abstract 来修饰方法 (就像在下面的 IWalkable 中 里面void walk();就等同于 public abstract void walk(); )
//4、接口中的定义内部类 都是公共的静态内部类 使用public static 来修饰内部类
/*********************************常量接口*************************/
// 常量接口:有人喜欢使用接口来封装多个常量信息 我们称之为常量接口 其目和常量类相同(不推荐)
// 标志接口:接口中没有任何成员,就仅仅是一个接口的定义,就是一个标志,其他的类实现该接口,就属于该家族,我们可以通过第三方代码赋值该接口实现类特殊的功能(不推荐)
//咱们使用的方法 主要包含了抽象方法
/*********************************接口特点*************************/
//接口不存在构造方法 也不能显示定义构造器 不能实例化 不能new
//接口只能继承接口 不能继承类 且接口支持多继承(类是单继承关系) ----> [修饰符]interface 接口名字 extends 接口1 接口2
//接口里面的方法全是抽象的 默认修饰符是 public abstract
//接口里面的字段全是全局静态常量 默认修饰符是 public static fianl
//接口里面内部类全是公共的静态的,默认修饰符是public static
/*********************************接口的实现者就是:实现类*************************/
//接口仅仅只是定义了某些事物应有的功能,但是并没有提供实现 此时,我们需要提供实现类去实现接口 并覆盖 接口中的方法 从而实现类接口定义的功能
/*********************************类实现接口的语法 *************************/
//[修饰符] class 类名 extends 父类 implement 接口1 接口2 {} (语法:一个类可以实现多个接口,从而祢补了类的单继承关系)
/*********************************继承关系*************************/
//类和类之间存在继承关系:使用extends来表示
//接口和接口之间只能是继承关系:使用extends来表示
//接口和实现类之间只能是实现关系(继承关系):使用implements来表示 (接口是实现类的父类,)
//-----> 接口变量 == 创建实现类对象 (体现了多态思想)
// 接口和实现类的多态关系才是我们今后见的最多的
// 下方定义类Cat要是想实现接口当中的方法就必须把 walk使用public修饰符(那是因为接口是一个抽象的父类 这个父类所有定义的方法都是默认public的 所以子类实现的时候 也需要添加public修饰符)
interface IWalkable{
void walk();
// interface ABC();
// IWalkable(); 不能显示构造器
}
interface ISwimable {
}
//猫
class Cat implements IWalkable{
public void walk(){
System.out.println("猫");
}
}
class dog implements IWalkable{
public void walk(){
System.out.println("狗");
}
}
//鱼 一个接口对多个类
class Fish extends Animal implements ISwimable,IWalkable{
public void walk(){
}
public void swim(){
System.out.println("鱼");
}
}
class Animal{
}
interface Amph extends IWalkable,ISwimable{
}
public class Main {
public static void main(String[] args){
System.out.println("aa");
// new IWalkable(); 不能new 接口
// Cat c = new Cat();/*唾弃 这种写法没意义 要实现面向接口的编程 请看下面的代码*/
// c.walk();
IWalkable w = new Cat();/*实现面向接口的编程 实现子类的方法 所以需要父类的指针指向子类的对象 从而实现子类的方法 进行输出*/
IWalkable i = new dog();
ISwimable s = new Fish();
Fish fish = new Fish();
fish.swim();
w.walk();
i.walk();
}
}
网友评论