【Java基础】Java接口的总结
什么是接口
接口和抽象类很相似,也是一种抽象的概念,用Interface关键字来修饰。那有了抽象类为啥还要有个接口呢,既然都是抽象的,要一个不就可以了吗?其实不是这样的,抽象类是对一类事物共性的一种抽象,但是对于一些属于部分个体的特性和功能,我们需要接口来进行扩充。例如:Person是对不同人的抽象,如黑人,白人,黄种人等,他们都有姓名,年龄,肤色等属性,都会走,会跑,会吃东西,会睡觉这些功能,但是对于一些特技,例如有些人有普通人不具备的特性,例如会将手转360度,这些特别的非共性的东西可以放在接口中,拥有这种特性的人可以实现接口达到继承抽象方法 相似的目的。
接口中的成员特点
从接口中的成员变量,构造方法和成员方法去总结。
- 成员变量:
成员变量不管是否显示定义类型,都默认为public static final类型的静态常量,所以不能被修改,继承,可以通过接口名去访问 ; - 构造方法:
接口没有构造方法!!!这个和抽象类不同。那实现接口的子类如何初始化呢?因为子类初始化都默认调用super();class Student extends Object implements InterPerson{
public Student() {
super();
}
}其实所有类如果没有写继承类,默认都是extends Object这个祖先类,所以这里的super()调用的是Object类中的无参构造方法。
- 成员方法:
成员方法默认是public abstract修饰的!也就意味中接口中的成员方法必须无方法体;这个不同于抽象类,抽象类中方法可以是抽象,也可以有自己的方法,而且也可以有非public类型方法。
另外,由于成员方法默认是public abstract修饰的,所以自然不能和final以及static同时存在了。
总结起来就是:接口中无默认构造方法,所有成员变量都是public static final修饰的,所有的成员方法都是public abstract修饰的。
接口、类之间的继承(extends)实现(implements)关系
- 类与类:继承关系,只能单继承,但是可以多层继承;
- 类与接口:实现关系,一个类可以实现多个接口,以逗号分割;
- 一组测试用例,顺便测试下一个类继承两个接口并且接口中定义了相同的方法。
/**
* Created by lili on 15/10/23.
*/ interface Father {
public abstract void show();
} interface Mother {
public abstract void show();//注意,这里定义的方法和Father中的一致
public abstract void show2();
} class Son implements Mother, Father{
public void show(){
System.out.println("Which show?");
} public void show2() {
System.out.println("Mother show");
}
} public class InterfaceTest {
public static void main(String[] args) {
Father father = new Son();
father.show(); Mother mother = (Mother)father;
mother.show(); mother.show2();
}
}运行结果:
Which show?
Which show?
Mother show Process finished with exit code 0运行结果表明,Father接口的引用指向的Son的实例,再强制转为Mother的引用,还是可以访问show,说明这个show是Mother和Father接口中show的共同实现。
- 接口与接口:继承关系,可以单继承,也可以多继承。
抽象类和接口的区别
1. 成员区别
抽象类(abstract class):
成员变量:可以变量,也可以常量(final类型)
构造方法:有
成员方法:可以抽象,也可以非抽象
接口(interface):
成员变量:只可以常量(public static final)
构造方法:无构造方法
成员方法:只可以抽象(public abstrart)
2. 关系区别
类与类:继承,单继承
类与接口:实现,单实现,多实现
接口与接口:继承,单继承,多继承
3. 设计理念区别
抽象类:被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
接口:被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。
【Java基础】Java接口的总结的更多相关文章
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
- Java基础-面向接口(interface)编程
Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- Java基础-Java数据类型
Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java基础-Java中的堆内存和离堆内存机制
Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.
- Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)
Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...
- Java基础-Java中的并法库之线程池技术
Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.
- Java基础-JAVA中常见的数据结构介绍
Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...
随机推荐
- 教育O2O在学校落地,学堂在线瞄准混合式教学
(大讲台—国内首个it在线教育混合式自适应学习平台.) 进入2015年,互联网教育圈最火的词非“教育O2O”莫属.不断刷新的融资金额和速度,不断曝光的正面和负面新闻,都让教育O2O公司赚足了眼球.然并 ...
- Java中的异常处理机制的简单原理和应用
异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间.地点.人物.情节等信息,可以用一个对象来表示,Java使用面向对象的方式 ...
- Java基础中的一些注意点(续)
1.局部(local)变量是在一个方法内定义的变量, 也被称作自动(automatic).临时(temporary)或栈(stack)变量 - 当一个方法被执行时, 局部变量被创建: ...
- 边框的css3样式
一.圆角(border-radius) border-radius:[ <length> | <percentage> ]{1,4} [ / [ <length> ...
- css3360度旋转动画
@-webkit-keyframes Parallaxs{ from { -webkit-transform: rotate(180deg) ; -moz-transform: rotate(180d ...
- 从Clarifai的估值聊聊深度学习
从Clarifai的估值聊聊深度学习 [转载请注明出处] 前几天和 Ayden @叶瀚中 聊天时,提到了 www.clarifai.com 这家公司. 此前,我已经从各方消息中听说过创始人Matt Z ...
- WINDOWS HYPER-V加新网卡,设置网络出错
新网卡加入,设置好IP之后,HYPER-V需要更改相应外部网络连接,然后重新生成新的虚拟连接网卡. 不然,虚拟机无法正常使用网络. 但我昨天在绑定新的网站时,出现如下错误: Adding a new ...
- AHB总线和APB总线
AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作:非三态的实现方式:支持突发传输:支持分段传输:支持多个主控制器:可配置 ...
- QStringRef可以提高性能,下次注意使用;QPair方便了语法,函数可以一次返回多个返回值,方便使用
而且QPair从此与各种QMap容器联系了起来,会非常好用.甚至QList也可以成双成对的使用元素了: QList<QPair<int, double> > list;list ...
- 我的Photoshop第一个作品
想学Photoshop好久了, 作为一个想成为"将计算机技术和艺术结合起来的人", 不会Photoshop感觉说不过去. 先选了一个图尝试做, 结果发现太难了. 我给背景上色, 画 ...