接口小结
来源:互联网 发布:sql设置必须包含@ 编辑:程序博客网 时间:2024/06/14 06:50
本文写作思路:
一、特点
A:接口用关键字interface表示
格式:interface 接口名 {}
B:类实现接口用implements表示
格式:class 类名 implements 接口名 {}
C:接口不能实例化
如何实现实例化?---------多态
由此可见:
A:具体类多态(几乎不用)
B:抽象类多态(常用)
C:接口多态(最常用)
D:接口的子类
A:可以是抽象类,但是意义不大;
B:可以是具体类,要重写接口中的所有抽象方法(推荐)
//定义动物培训接口interface AnimalTrain { public abstract void jump();}//抽象类是实现接口abstract class Dogg implements AnimalTrain {}//具体类实现接口class Catt implements AnimalTrain { public void jump() { System.out.println("猫可以调高了"); }}public class InterfaceDemo { /** * @param args */ public static void main(String[] args) { AnimalTrain at = new Catt(); at.jump(); }}二、接口的成员特点
(1)成员变量
在接口中的变量只能是常量,并且是静态的。
默认修饰符:public static final
建议:自己手动给出
interface Inter { public int num = 10; public final int num2 = 20; public static final int num2 = 30;}//接口名+Impl这种格式是接口的实现类格式class InterImpl implements Inter {}public class InterfaceDemo2 { /** * @param args */ public static void main(String[] args) { //创建对象 Inter i = new InterImpl(); System.out.println(i.num);//10 System.out.println(i.num2);//20 //无法为最终变量num、num2分配值 /*i.num=100; i.num2=200;*/ System.out.println(Inter.num);//10 System.out.println(Inter.num2);//20 System.out.println("----------------"); }}
(2)构造方法
接口没有构造方法
所有的类都默认继承自一个类:object
类Object是类层次结构的根类,每个类都使用object作为超类。
interface Inter { //错误:需要<标识符> /*public Inter(){}*/}//接口名+Impl这种格式是接口的实现类格式/*class InterImpl implements Inter { public InterImpl { super(); }}*///等同于:class InterImpl extends Object implements Inter { public InterImpl { super(); }}public class InterfaceDemo2 { /** * @param args */ public static void main(String[] args) { }}
(3)成员方法
默认修饰符:public abstract
建议:自己手动给出
三、类与类、类与接口以及接口与接口的关系
(1)类与类
继承关系,只能单继承,可以多层继承。
(2)类与接口
实现关系,可以单实现,也可以多实现。
并且还可以在继承一个类的同时实现多个接口。
interface Father { public abstract void show();}interface Mother { public abstract void show2();}class son extends Object implements Father,Mother { public void show(){ System.out.println("show son"); } public void show2(){ System.out.println("show2 son"); }}public class InterfaceDemo3 { /** * 类与接口:可以是单实现,也可以是多实现。 * 并且还可以在继承一个类的同时实现多个接口。 */ public static void main(String[] args) { //创建对象 Father f= new son(); f.show(); Mother m = new son(); m.show2(); }}
(3)接口与接口
继承关系,可以单继承,也可以多继承。
四、抽象类和接口的区别
(1)成员区别
抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有
成员方法:可以抽象,也可以非抽象。
接口:
成员变量:只可以是常量
成员方法:只可以抽象
(2)关系区别
类与类:继承,单继承;
类与接口:实现,单实现,多实现
接口与接口:继承,单继承,多继承。
(3)设计理念的不同
抽象类:
被继承体现的是:“is a”的关系。抽象类中定义的是该继承体系的共性功能。
接口:
被实现体现的是:“like a”的关系,接口中定义的是该继承体系的扩展功能。
五、猫狗案例
//定义跳高接口interface Jumpping { //跳高功能 public abstract void jump();}//定义抽象类abstract class Animal { //姓名 private String name; //年龄 private int age; public Animal(){ } public Animal(String name,int age){ this.name=name; this.age=age; } public String getName(){ return name; } public void setName(String name){ this.name=name; } public int getAge(){ return age; } public void setAge(int age){ this.age=age; } //吃饭(); public abstract void eat(); //睡觉(){}; public void sleep(){ System.out.println("睡觉觉了"); }}//定义猫类class Cat extends Animal { public Cat(){}; public Cat(String name,int age){ super(name,age); } public void eat(){ System.out.println("猫吃鱼"); }}//定义狗类class Dog extends Animal { public Dog(){}; public Dog(String name,int age){ super(name,age); } public void eat(){ System.out.println("猫吃鱼"); }}//定义跳高功能的猫class JumpCat extends Cat implements Jumpping { public JumpCat(){} public JumpCat(String name,int age){ super(name,age); } public void jump(){ System.out.println("跳高猫"); }}//定义跳高功能的狗class JumpDog extends Dog implements Jumpping { public JumpDog(){} public JumpDog(String name,int age){ super(name,age); } public void jump(){ System.out.println("跳高狗"); }}public class Demo1 { /** * 猫狗案例:加入跳高的额外功能 * 分析: * 从具体到抽象 * 猫: * 姓名,年龄 * 吃饭,睡觉 * 狗: * 姓名,年龄 * 吃饭,睡觉 * 由于有共性功能,所以,我们抽取出一个父类; * 动物: * 姓名,年龄 * 吃饭(); * 睡觉(){}; * 猫:继承自动物 * 狗:继承自动物 * * 跳高的功能是一个新的扩展功能,定义一个接口 * 接口: * 跳高; * 部分猫:实现跳高 * 部分狗:实现跳高 * * 实现: * 从抽象到具体 * * 使用: * 具体类 */ public static void main(String[] args) { //定义跳高猫 JumpCat jc = new JumpCat(); jc.setName("哆啦A梦"); jc.setAge(3); System.out.println(jc.getName()+"-----"+jc.getAge()); jc.eat(); jc.sleep(); jc.jump(); System.out.println("-------------"); JumpCat jc2 = new JumpCat("加菲猫",5); System.out.println(jc2.getName()+"-----"+jc2.getAge()); jc2.eat(); jc2.sleep(); jc2.jump(); }}六、总结:
接口的设计理念是为了代码后期的扩展功能而实现,接口中定义的抽象方法主要是部分类的扩展功能,增添的功能。这也是它和抽象类的不同,抽象类是定义各类的共性特征。
- 接口小结
- 接口小结
- ITransform接口测试小结
- Java小结--类、接口
- 接口知识小结
- java 接口小结
- ServletRequest接口回顾小结
- 接口设计小结
- 串行通信接口小结
- 小结:接口注入
- 【RFC】接口小结
- python 接口测试 小结
- 串行通信接口小结
- 串行通信接口小结
- Java接口小结
- 接口测试框架小结
- java 接口小结
- APP接口开发小结
- C/C++中的语言类型
- 方立勋_30天掌握JavaWeb_Servlet事件监听器
- 剑指offer-链表中倒数第K个节点
- web测试方法总结
- js base64编码 解码
- 接口小结
- NEXUS私服总结
- iOS日常工作之常用宏定义大全
- eGov电子政务系统(第一讲)
- Struts2的模型驱动(ModelDriven)
- 算法细节系列(10):503. Next Greater Element II
- docker总体概况
- C#, VB.NET如何将Excel转换为PDF
- 利用Spring的@Schedule实现定时任务