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接口深入的更多相关文章

  1. java接口调用——webservice就是一个RPC而已

    很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...

  2. java 接口的作用和好处

    1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...

  3. java接口

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  4. java接口的嵌套

    java接口 1.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值 2.接口中的方法默认都是 public abstract ...

  5. java 接口和抽象类的区别

    java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...

  6. java 接口(上)

    1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...

  7. java接口和抽象类

    关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...

  8. python面向对象进阶 反射 单例模式 以及python实现类似java接口功能

    本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...

  9. 初探设计:Java接口和抽象类何时用?怎么用?

    今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...

  10. OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例

    转自:  http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...

随机推荐

  1. java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context 错误

    spring boot 项目启动报错:原因一般是注入了相同名字的service -- :: com.gxcards.mes.MainWwwWeb: logStartupProfileInfo INFO ...

  2. ZJOI2019Day1AFO记

    先去看了看T3,发现暴力DP就是n^3的,于是不妨先写一个,写完n^3就9:30多了..有点慌去看看T1,太鬼畜了,还是先写个n=5压压惊...写了一年,在11:00写完并检查(?)了n=5.然后去看 ...

  3. fetch与XHR的区别与优势

    Fetch API更加现代 XHR 和 Fetch API 最显著的区别就是调用方式不同.这一点大家应该都知道吧. 举个例子,下面两端代码完成的是同一功能: // 用 XHR 发起一个GET请求 va ...

  4. 毕设记录(ajax)

    有关ajax的cache属性值 cache作用:是否在缓存中读取数据的读取. cache属性是true(默认值)时:在第一次请求完成之后,如果地址和参数不变化,第二次去请求,会默认获取缓存中的数据,不 ...

  5. Mac OS X 操作系统下JDK安装与环境变量配置

    1. 下载JDK. 去oracle官网的Java SE Downloads页面(如图 1),下载Mac os版本JDK(如图 2): 图 1 图 2   2. 安装JDK. 下载完成后,双击.dmg文 ...

  6. node.js 生成二维码

    因为自己的项目中,想在商品详情页上 显示一个 商品优惠券的二维码. 以此为需求. node.js 后台代码 const qr_image = require("qr-image") ...

  7. JS前端编码规范

    转自<前端编码规范之JavaScript>,网址:http://www.cnblogs.com/hustskyking/p/javascript-spec.html 一个是保持代码的整洁美 ...

  8. 摩羯座Capricornus

    Capricornus  摩羯座的人通常会如何拒绝别人. 摩羯座的人做事脚踏实地,比较固执,忍耐力也是出奇的强大,同时也非常勤奋.他们心中总是背负着很多的责任感,但往往又很没有安全感,不会完全地相信别 ...

  9. php 查询mysql数据批量转为PDF文件一(mac使用配置wkhtmltopdf html导出PDF)

    数据转标准PDF查文档,查资料先转HTML标准格式再html转PDF 转PDF wkhtmltopdf工具是最佳选择 首先下载wkhtmltopdf https://wkhtmltopdf.org/d ...

  10. 在本地运行正常的静态网页放到tomcat中却显示异常的原因

    在本地写好了一个个人网站,本地直接用浏览器运行,很顺利,然而把网站放到Tomcat里面,却发现图片显示不出来,这就奇怪了. 后来发现,我的网站的Image文件夹用了大写“I”,而网页里面的路径用了小写 ...