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 ...
随机推荐
- Looks like the Spring listener was not configured for your web app!
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- 21个DOS常用命令
DOS,可别不知道DOS在哪里运行,有好几种方法1.开始菜单---程序---附件---命令提示符2.开始菜单---运行---打命令CMD 一.常用DOS命令(1)cd.. ...
- C# 中?和??的用法
最近在看官方的源码时,经常看到有 Int? sum; 和 FileProvider = FileProvider ??builder.GetFileProvider(); 一个问号: 很多数据类型时不 ...
- Tomcat下使用Druid配置JNDI数据源
com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...
- WPF基础篇之控件模板(ControlTemplate)
WPF中每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应.我们可以自定义一个模板来替换掉控件的默认模板以便打造个性化的控件. 与Style不同,Style只能改变控件 ...
- WRT 版本说明
std_generic 标准通用版nokaid 是不带XBOX支持的(Kai代表连接游戏平台到网络上.)virtual** 表示支持虚拟专用网络的版本VOIP 带VOIP表示支持网络电话的版本.meg ...
- Selenium简介与环境搭配-----Selenium快速入门(一)
Selenium是一套自动化测试框架.官方网站是:https://www.seleniumhq.org/ 某些童鞋访问可能需要FQ. Selenium支持多种语言开发,例如Java,Python,C ...
- 一次SQL慢查询的优化处理
背景 在开发完成,数据验证的过程中,需要对两个非常大的表进行query,运行了十几分钟都跑不完.如下: select * from big_a a, big_b b where a.some_id = ...
- 第三方工具 - 关于echarts下钻功能的一些总结.js
废话:好久没有写博客了,每每看着自己的'战绩'都有点愧疚,但是这段时间确实学习了不少东西,待我慢慢地一 一梳理,将之消化并分享. ---------------------------$O_O$--- ...
- css - 移动端reset汇总与注释
1.解决移动端触摸a元素,会有蓝色阴影 正常状态: 点击时状态: a{ outline:none; -webkit-tap-highlight-color: rgba(,,,); } -webkit- ...