java接口深入
1、抽象类。
java常规类中,有些方法并不是固定的,而是在不同的情况下有不同的实现的,比如一个人,在公司要工作,在学校要学习,在食堂要吃饭,但是这个人还有相同的地方,比如不论在哪里都要呼吸,看,挺,所有可以把变化的和不变化的分离开。
正常情况下的类如下:
package org;
public class Person {
public Person action(){
System.out.println("在公司工作");
return this;
}
public Person look(){
System.out.println("我就看看!");
return this;
};
public Person breath(){
System.out.println("我随时在呼吸!");
return this;
}
public Person listen(){
System.out.println("我很警惕,随时耳听八方!");
return this;
}
}
但是这里边的action方法可能随着环境的变化做出不一样的动作,所有就可以给抽象出来,变成一个抽象的父类
package org;
public abstract class Person {
public abstract Person action();
public Person look(){
System.out.println("我就看看!");
return this;
};
public Person breath(){
System.out.println("我随时在呼吸!");
return this;
}
public Person listen(){
System.out.println("我很警惕,随时耳听八方!");
return this;
}
}
抽象类和接口类似,都不能有实例。例如:
package org;
public abstract class TestIfCanBeInstance {
}
class MyTest{
public static void main(String[] args) {
//new TestIfCanBeInstance();'TestIfCanBeInstance' is abstract; cannot be instantiated
}
}
类中的静态方法没有实现,需要在其子类进行实现。类中有抽象方法,这个类也必须是抽象的。
抽象类的使用方法如下:
class Test{
public static void main(String[] args) {
new Person(){
@Override
public Person action() {
System.out.println("我在食堂要吃饭!!!");
return this;
}
}.action().look().breath().listen();
}
}
可以看到,抽象类隐藏了其他方法的实现,也正好符合了java封装的特性。
2、接口
接口就是一个完全抽象的类,本身可以不提供任何实现(当然jdk8以后出现的接口的默认实现),接口规定了实现这个接口的类改有的模型,接口最伟大的是实现了多继承。
接口的声明利用关键字interface,声明如下:
package org;
public interface Shape {
void area();
void lenght();
}
接口的方法默认是public static的,你并不需要将这个声明加上,如果你想将方法声明为private,Modifier 'private' not allowed here。因为接口里的私有声明没有任何意义。
接口也可以像抽象类一样,引用父类,指向一个实现了这个父类的子类。当我们操作的不是一个具体的方法,而是父类,实现的类之间的解耦和实现的封装化。
java接口可以通过继承进行扩展。
接口中的域默认是public static final的,原来会用接口存储一些我们用的变量,后可以用更强大的枚举类代替。
接口的继承,如果有两个接口的签名方法一样,这对接口的使用没有什么影响。但是如果两个方法名字相同,但是返回值不一样,这就会导致子类的模糊,会发生编译器异常。
java接口深入的更多相关文章
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- java 接口的作用和好处
1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...
- java接口
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- java接口的嵌套
java接口 1.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值 2.接口中的方法默认都是 public abstract ...
- java 接口和抽象类的区别
java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...
- java 接口(上)
1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
- java接口和抽象类
关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- 初探设计:Java接口和抽象类何时用?怎么用?
今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...
- OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例
转自: http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...
随机推荐
- Confluence 6 针对 'unmigrated-wiki-markup' 宏重新尝试合并
在签名的章节中,我们主要是针对没有完全合并完成余下的为合并内容的异常处理.最常见的情况是内容以及被合并了,但是页面使用 wiki 标记的内容没有被合并,通常这些 wiki 标记的内容使用了 'unmi ...
- redist命令操作(三)--集合Set,有序集合ZSet
1.Redis 集合(Set) 参考菜鸟教程:http://www.runoob.com/redis/redis-sets.html Redis 的 Set 是 String 类型的无序集合.集合成员 ...
- 利用window.name+iframe跨域获取接口数据
最近做了一个表单广告,需要从接口读取数据,做完发现谷歌火狐下正常,360兼容和IE浏览器无法获取数据,以下是鲜明的对比: 调试发现报错了: 然后开发把接口改成支持windowname,一开始 ...
- promise用法十道题
JS是单线程语言,多数的网站不需要大量计算,程序耗时主要是在磁盘I/O和网络I/O上 ,虽然固态硬盘SSD读取很快,但是和CPU比起来却不在一个数量级上,而且网络上的一个数据包来回时间更慢,所以一些C ...
- day 08 文件操作
1.文件操作 1.文件操作 模特主妇护士老师.txt 1.文件路径:d:\ 模特主妇护士老师.txt 2.编码方式:utf-8 3.操作方式:只读,只写,追加,读写,写读 以什么编码方式储存的,就必须 ...
- npm run build 打包后,如何运行在本地查看效果(Nginx服务)
这段时间,研究了一下vue 打包的很慢的问题.但是当我 npm run build 打包后,在本地查看效果的时候,活生生被我老大鄙视了,因为我打开了XAMPP.他说:你怎么不用Nginx啊?用这个一堆 ...
- Robot Framework自动化使用
自动化测试框架---Robot Framework Robot Framework是用Python语言写的,所以在安装Robot Framework以前必须安装Python环境.Robot Frame ...
- apk文件二维码微信无法识别 APP在微信中二维码扫描无法下载的解决方案
现在微信分享的功能很多,从分享的链接下载apk安卓包是很正常的,但是微信不让下载apk包,只能通过浏览器来下载,但是这要给用户一个提示吧,不然用户不知道 下面我们来实现,引导用户通过浏览器来下载apk ...
- 小学四则运算编程(c#)
---恢复内容开始--- 预计耗时与实际耗时: 代码基本完善后,对代码进行了性能改善,使用递归并减少了一些不必要的代码. 项目分析:二年级以下无乘除,四年级以下无小数 性能: 类图: 通过这次个人项目 ...
- 修改create-react-app支持多入口
使用Facebook官方脚手架create-react-app创建React应用,默认只能生成一个SPA,入口是index.html.虽然,SPA的页面切换可以使用前台路由框架方便(比如React-R ...