推介做界面的网站,flash网站建设技术是什么,做外贸需要几个网站,wordpress集成微信收款目录
1.接口的概念
2.语法规则 3.接口的使用 4.接口的特性
总结#xff1a;
5.实现多个接口
6.接口间的继承 1.接口的概念
接口就是公共的行为规范标准#xff0c;大家在实现时#xff0c;只要符合规范标准#xff0c;就可以通用。 在Java中#xff0c;接口可以看成…目录
1.接口的概念
2.语法规则 3.接口的使用 4.接口的特性
总结
5.实现多个接口
6.接口间的继承 1.接口的概念
接口就是公共的行为规范标准大家在实现时只要符合规范标准就可以通用。 在Java中接口可以看成是多个类的公共规范是一种引用数据类型。 2.语法规则
接口的定义格式与定义类的格式基本相同将class关键字换成 interface 关键字就定义了一个接口。 public interface 接口名称{ // 抽象方法 public abstract void method1(); // public abstract 是固定搭配可以不写 public void method2(); abstract void method3(); void method4();// 注意在接口中上述写法都是抽象方法跟推荐方式4代码更简洁 } 提示: 1. 创建接口时, 接口的命名一般以大写字母 I 开头。 2. 接口的命名一般使用 形容词 词性的单词。 3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性。 3.接口的使用
接口不能直接使用必须要有一个实现类来实现该接口实现接口中的所有抽象方法。 public class 类名称 implements 接口名称{ // ... } 注意子类和父类之间是extends 继承关系类与接口之间是 implements 实现关系。 请实现笔记本电脑使用USB鼠标、USB键盘的例子 1. USB接口包含打开设备、关闭设备功能 2. 笔记本类包含开机功能、关机功能、使用USB设备功能 3. 鼠标类实现USB接口并具备点击功能 4. 键盘类实现USB接口并具备输入功能 // USB接口 public interface USB { void openDevice(); void closeDevice(); } // 鼠标类实现USB接口 public class Mouse implements USB { Override public void openDevice() { System.out.println(打开鼠标); } Override public void closeDevice() { System.out.println(关闭鼠标); } public void click(){ System.out.println(鼠标点击); } } // 键盘类实现USB接口 public class KeyBoard implements USB { Override public void openDevice() { System.out.println(打开键盘); } Override public void closeDevice() { System.out.println(关闭键盘); } public void inPut(){ System.out.println(键盘输入); } } // 笔记本类使用USB设备 public class Computer { public void powerOn(){ System.out.println(打开笔记本电脑); } public void powerOff(){ System.out.println(关闭笔记本电脑); } public void useDevice(USB usb){ usb.openDevice(); if(usb instanceof Mouse){ Mouse mouse (Mouse)usb; mouse.click(); }else if(usb instanceof KeyBoard){ KeyBoard keyBoard (KeyBoard)usb; keyBoard.inPut(); } usb.closeDevice(); } } // 测试类 public class TestUSB { public static void main(String[] args) { Computer computer new Computer(); computer.powerOn(); // 使用鼠标设备 computer.useDevice(new Mouse()); // 使用键盘设备 computer.useDevice(new KeyBoard()); computer.powerOff(); } } 4.接口的特性
1. 接口类型是一种引用类型但是不能直接new接口的对象 public class TestUSB { public static void main(String[] args) { USB usb new USB(); } } // Error:(10, 19) java: day20210915.USB是抽象的; 无法实例化 2. 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract只能是public abstract其他修饰符都会报错) 。 public interface USB { // Error:(4, 18) java: 此处不允许使用修饰符private private void openDevice(); void closeDevice(); } 3. 接口中的方法是不能在接口中实现的只能由实现接口的类来实现 public interface USB { void openDevice(); // 编译失败因为接口中的方式默认为抽象方法 // Error:(5, 23) java: 接口抽象方法不能带有主体 void closeDevice(){ System.out.println(关闭USB设备); } } 4. 重写接口中方法时不能使用默认的访问权限 public interface USB { void openDevice(); // 默认是public的 void closeDevice(); // 默认是public的 } public class Mouse implements USB { Override void openDevice() { System.out.println(打开鼠标); } // ... } // 编译报错重写USB中openDevice方法时不能使用默认修饰符 // 正在尝试分配更低的访问权限; 以前为public 5. 接口中可以含有变量但是接口中的变量会被隐式的指定为 public static final 变量 public interface USB { double brand 3.0; // 默认被final public static修饰 void openDevice(); void closeDevice(); } public class TestUSB { public static void main(String[] args) { System.out.println(USB.brand); // 可以直接通过接口名访问说明是静态的 // 编译报错Error:(12, 12) java: 无法为最终变量brand分配值 USB.brand 2.0; // 说明brand具有final属性 } } 6. 接口中不能有静态代码块和构造方法 public interface USB { // 编译失败 public USB(){ } {} // 编译失败 void openDevice(); void closeDevice(); } 7. 接口虽然不是类但是接口编译完成后字节码文件的后缀格式也是.class。 8. 如果类没有实现接口中的所有的抽象方法则类必须设置为抽象类。 9. jdk8中接口中还可以包含default方法。
总结 接口是一种引用数据类型。接口是使用interface方法来修饰的。接口当中不能有被实现的方法意味着只能有抽象方法。但是两个方法除外一个是static修饰的方法一个是被default修饰的方法。接口当中的抽象方法默认都是public abstract修饰的接口当中的成员变量默认都是public static final修饰的接口不能进行实例化。类和接口之间的关系可以使用implements来进行关联。接口也是有对应的字节码文件的。接口中不能有静态代码块、实例代码块和构造方法。重写接口中方法时不能使用默认的访问权限要用public重写的大于被重写的。 5.实现多个接口
在Java中类和类之间是单继承的一个类只能有一个父类即Java中不支持多继承但是一个类可以实现多个接口。下面通过类来表示一组动物。 class Animal { protected String name; public Animal(String name) { this.name name; } } 另外我们再提供一组接口, 分别表示 会飞的, 会跑的, 会游泳的: interface IFlying { void fly(); } interface IRunning { void run(); } interface ISwimming { void swim(); } 接下来我们创建几个具体的动物 猫, 是会跑的: class Cat extends Animal implements IRunning { public Cat(String name) { super(name); } Override public void run() { System.out.println(this.name 正在用四条腿跑); } } 鱼, 是会游的: class Fish extends Animal implements ISwimming { public Fish(String name) { super(name); } Override public void swim() { System.out.println(this.name 正在用尾巴游泳); } } 青蛙, 既能跑, 又能游(两栖动物): class Frog extends Animal implements IRunning, ISwimming { public Frog(String name) { super(name); } Override public void run() { System.out.println(this.name 正在往前跳); } Override public void swim() { System.out.println(this.name 正在蹬腿游泳); } } 注意一个类实现多个接口时每个接口中的抽象方法都要实现否则类必须设置为抽象类。 还有一种神奇的动物, 水陆空三栖, 叫做 鸭子: class Duck extends Animal implements IRunning, ISwimming, IFlying { public Duck(String name) { super(name); } Override public void fly() { System.out.println(this.name 正在用翅膀飞); } Override public void run() { System.out.println(this.name 正在用两条腿跑); } Override public void swim() { System.out.println(this.name 正在漂在水上); } } 上面的代码展示了 Java 面向对象编程中最常见的用法: 一个类继承一个父类, 同时实现多种接口。
继承表达的含义是 is - a 语义, 而接口表达的含义是 具有 xxx 特性 。 猫是一种动物, 具有会跑的特性。 青蛙也是一种动物, 既能跑, 也能游泳。 鸭子也是一种动物, 既能跑, 也能游, 还能飞。
这样设计有什么好处呢? 时刻牢记多态的好处, 让程序猿忘记类型. 有了接口之后, 类的使用者就不必关注具体类型,而只关注某个类是否具备某种能力只要创建对象或修改参数就可以实现这些特性。 见下面例子: 6.接口间的继承 在Java中类和类之间是单继承的一个类可以实现多个接口接口与接口之间可以多继承。即用接口可以达到多继承的目的。
接口可以继承一个接口, 达到复用的效果. 使用 extends 关键字. interface IRunning { void run(); } interface ISwimming { void swim(); } // 两栖的动物, 既能跑, 也能游interface IAmphibious extends IRunning, ISwimming { } class Frog implements IAmphibious { ... } 通过接口继承创建一个新的接口 IAmphibious 表示 两栖的. 此时实现接口创建的 Frog 类, 就继续要实现 run 方法, 也需要实现 swim 方法接口间的继承相当于把多个接口合并在一起。