java基础笔记(8)----接口
- 接口
是特殊的抽象类,纯抽象类---所有方法都是抽象方法
接口和抽象类的区别;
相同点:
- 编译后,会分别生成对应的.class文件
- 都不能创建对象(实例化),但是可以生成引用(使用多态)
不同点:
- 抽象类有构造方法;接口没有构造方法;
- 接口中的属性 默认是public static final的(常量);
- 接口中的方法 默认是public abstract的。
- 定义
- 接口的语法:
修饰符(public/默认) interface 接口名{}
interface 子接口名 extends 父接口名1,父接口名2,.... {}
- 类和接口的关系:
- class 实现类名 implements 父接口名1,父接口名2,....{}
- 类、类、接口的关系:
- class 类名 extends 父类名 implements 父接口名1,父接口名2,....{}
- 注意:
- 1个类实现父接口,必须实现父接口中的所有方法;除非该类是抽象的;
- 实现类在实现父接口的方法 时,方法 的访问修饰符 必须是public的;
- 引用类型相互转换时,不论是否实现/继承某个接口,当强转成接口类型时,编译都OK;但 运行时,可能会出现ClassCastException。
package com.lvsling.test; //接口 public public MyClass m = new MyClass(); Super s = m; //多态(父类的引用 s.m(); MyClass m2 = (MyClass)s; m2.m5(); Interface1 i1 = m; i1.m1(); Interface2 i2 = m; i2.m2(); Interface3 i3 = m; //多态 i3.m3(); Interface4 i4 = m; i4.m4(); i4.m1(); i4.m2(); } } abstract public public } interface Interface1{ int void m1(); } interface Interface2{ void m2(); } interface Interface3{ void m3(); } interface Interface4 extends Interface1,Interface2{ void m4(); } class MyClass extends Super implements Interface3,Interface4{ public public public public public } class Super{ public } |
- 拓展与提升
- 在面向对象中,承在类与类中是单继承,接口与接口之间是多继承关系;类与接口之间是多实现关系。
- 接口----是规范,是标准(好处)
- 多继承关系
- 有了接口,把程序中的主要功能 和 次要功能分开,主要功能 使用单继承的简单性进行重点实现,一旦主要功能实现了 次要功能根据需要 定义在接口中 进行多实现。
- 弱耦合性
- 接口定义后,把 接口的使用者和实现者 进行了分离,借助 多态 降低了程序间的耦合性。
- 接口回调:接口定义后,先定义接口的使用者 后定义接口的实现者。
package com.lvsling.test; public public Lamp lamp = new Lamp(); //红灯泡使用 RedLight redLight = new RedLight(); lamp.setLight(redLight); lamp.on(); } } // 标准-接口 interface Light{ void shine(); } // 台灯--标准的使用者 class Lamp{ // 灯口--用标准 private Light light; // 开 public light.shine(); } // get/set public Light getLight(){ return } public this.light = light; } } // 红灯泡--标准的实现者 class RedLight implements Light{ public System.out.println("发出红光…………"); } } |
java基础笔记(8)----接口的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- Java基础-通过POI接口处理xls
Java基础-通过POI接口处理xls 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Collection子接口之Set接口
Java基础-Collection子接口之Set接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学习Collection接口时,记得Collection中可以存放重复元素,也可 ...
- Java基础-Collection子接口之List接口
Java基础-Collection子接口之List接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们掌握了Collection接口的使用后,再来看看Collection接口中 ...
- 《Java基础——抽象与接口》
Java基础--抽象与接口 一.抽象: 规则: 关键字 abstract 修饰的类称为抽象类. 子类通过关键字extends实现继承. 关键字 abstract 修饰的方法称为抽象方法,抽 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java 基础三、接口与内部类
1. 在Java程序语言中,接口是对类的一种描述.例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口. public interface ...
- Java基础笔记1
java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...
随机推荐
- 错误代码: 1052 Column 'stu_id' in field list is ambiguous
1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:select stu_id, (SELECT stu_name FROM t ...
- Java Web项目缺少jsp、servlet jar包
1.错误描述 Caused by:java.lang.ClassNotFoundException:javax.servlet.jsp.PageContent 2.错误原因 缺少有关的js ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception
1.错误描述 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception:You have an error in your SQL synt ...
- faultString = "java.lang.NullPointerException : null"
1.错误描述 (mx.messaging.messages::ErrorMessage)#0 body = (null) clientId = "E75F6AF8-5E0E-4184-3AF ...
- .Net Core 1.0升级2.0(xproj项目迁移到.csproj )
vs2015的创建的项目是以*.xproj的项目文件,迁移到vs2017需要如下准备: 1.安装好vs2017(废话) 2.下载最新的SDK和 .NET Core 2.0 Preview 1 Runt ...
- P1141 01迷宫
https://www.luogu.org/problemnew/show/P1141 题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样 ...
- Windows Server 2012 R2 官方原版镜像
微软操作系统 Windows Server 2012 R2 官方原版镜像 Windows Server 2012 R2 是由微软公司(Microsoft)设计开发的新一代的服务器专属操作系统,其核心版 ...
- RobotFramework自动化测试框架的基础关键字(二)
1.1.1 如何快速查询某一个关键字的API说明 鼠标选中我们关键字,同时按住Ctrl+Alt键,即可出来该关键字的帮助API以及使用示例 1.1.2 如何快速补全关键字 ...
- 【Luogu1291】百事世界杯之旅(动态规划,数学期望)
[Luogu1291]百事世界杯之旅(动态规划,数学期望) 题面 洛谷 题解 设\(f[i]\)表示已经集齐了\(i\)个名字的期望 现在有两种方法: 先说我自己的: \[f[i]=f[i-1]+1+ ...
- 分享一下我进入IT行业的经历
今天突然根想写博客,就注册了一个,分享一下我的成长经历. 我第一次接触编程的时候是在上大学的时候,我学的专业是工程测量接触的第一个语言是vb,我记得很清楚,我当时写出第一个小Demo是的心情,感觉到了 ...