Java修炼——接口详解_接口的特征_使用接口的意义
接口中可以包含的内容:
抽象法和非抽象方法(jdk1.8,必须使用default的关键字),属性(public static final)常量。
接口和类的关系
1.(继承了接口)类必须去实现接口中的抽象方法。
package com.bjsxt.interfac;
public abstract class Person {
public abstract void show();
}
package com.bjsxt.interfac;
public class Student extends Person implements Play{
@Override
public void show() {
// TODO Auto-generated method stub
}
}
2.一个类既有继承也有实现的话,继承在前,实现在后。
public class Student extends Person implements Play
3.如果父类和接口都有一样的方法,则子类是调用父 类的方法而非接口的。
package com.bjsxt.interfac;
public interface Play {
public void show();
}
implements com.bjsxt.interfac.Person.show
4.如果父类和接口中的方法名称一样时,在子类调用时,要构成方法分重载。
package com.bjsxt.interfac;
public class Student extends Person implements Play{
@Override
public void show() {
// TODO Auto-generated method stub
}
@Override
public void show(String songName) {
// TODO Auto-generated method stub
}
}
package com.bjsxt.interfac;
public interface Play {
public void show(String songName);
}
接口的特征_使用接口的意义
接口的特征:
1.传递性
package com.bjsxt.interfac;
public interface InterA {
public void show();
}
interface InterB extends InterA{
}
interface InterC extends InterB{
}
class Impl implements InterC{
@Override
public void show() {
// TODO Auto-generated method stub
}
}
2.继承性(多继承)
package com.bjsxt.interfac;
public interface InterA {
public void show();
}
interface InterB {
}
interface InterC extends InterB, InterA{
}
class Impl implements InterC{
@Override
public void show() {
// TODO Auto-generated method stub
}
}
接口使用的意义:
可以实现设计与实现的分离,抽象出n多不同类的共同点。体现的是实现的能力。
鸟,飞机,球(多态)都是实现接口(Flay)调用相同的方法Flaying(),输出结结果,各不相同。
package com.bjsxt.interfacedemo;
public interface Flay {
public void Flaying();
}
class Airplane implements Flay{
@Override
public void Flaying() {
System.out.println("飞机在天上飞");
}
}
class Bird implements Flay{
@Override
public void Flaying() {
System.out.println("鸟在天上飞");
}
}
class Ball implements Flay{
@Override
public void Flaying() {
System.out.println("球在天上飞");
}
}
package com.bjsxt.interfacedemo;
public class TestFlay {
public static void main(String[] args) {
//接口类型指向实现类的对象
Flay air = new Airplane();
Flay ball =new Ball();
Flay bird=new Bird();
//调用相同的方法
air.Flaying();
bird.Flaying();
ball.Flaying();
//运行结果各不相同
}
}
总结(使用接口实现多态的步骤)
1.编写接口
2.实现类实现接口中的方法
3.接口类型new实现类对象
面向接口的编程。
Java修炼——接口详解_接口的特征_使用接口的意义的更多相关文章
- Java修炼——内部类详解
内部类详解 定义:将一个类定义在另一个类的内部,该类就称为内部类 类中定义的内部类特点: 内部类作为外部类的成员,可以直接访问外部类的成员 (包括 private 成员),反之则不行. 内部类做为外部 ...
- Java接口 详解(二)
上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...
- java集合(2)- java中HashMap详解
java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第八十三章:内部类与接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java6.0中Comparable接口与Comparator接口详解
Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...
- JDBC常用接口详解
JDBC中常用接口详解 ***DriverManager 第一.注册驱动 第一种方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver()) ...
- socket接口详解
1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...
- [转载]MII/MDIO接口详解
原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...
- map接口详解
1.Map接口详解(1)映射(map)是一个存储键.键值对的对象,给定一个键,可以查询得到它的值,键和值都可以是对象(2)键必须是唯一的,值可以重复(Map接口映射唯一的键到值)(3)有些映射可以接收 ...
随机推荐
- PHP路径指定web路径的方法
PHP路径指定web路径的方法直接在/前面加.就是代表web路径了 不是按照文件路径来算了 <pre>./Public/uploads/suolutu/' . $suijishu . '_ ...
- java编程思想第四版第十四章 类型信息习题
fda dfa 第三题u package net.mindview.typeinfo.test4; import java.util.ArrayList; import java.util.Array ...
- Cognitive Graph for Multi-Hop Reading Comprehension at Scale(ACL2019) 阅读笔记与源码解析
论文地址为:Cognitive Graph for Multi-Hop Reading Comprehension at Scale github地址:CogQA 背景 假设你手边有一个维基百科的搜索 ...
- shell命令管道未读完阻塞了子进程,与等待其结束的父进程死"锁"。
在exec执行一个子进程,我们希望使用管道取得子进程在重定向后的标准输出上的结果,同时等待子进程的结束.那么是等待子进程结束后才取管道数据,还是边取数据边等待子进程结束呢? 这里有一个调试的例子.u0 ...
- MachO文件详解--逆向开发
今天是逆向开发的第5天内容--MachO文件(Mac 和 iOS 平台可执行的文件),在逆向开发中是比较重要的,下面我们着重讲解一下MachO文件的基本内容和使用. 一.MachO概述 1. 概述 M ...
- Flex带Checkbox的Tree
想把Flex自带的Tree控件改成带有checkbox的样式. 原本以为同DataGrid一样,添加一个ItemRenderer就行,结果发现行不通. 进Tree控件的源码看了一下,发现Tree在自己 ...
- 初探three.js材质
这节我们浅谈一下THREE的材质.材质就是物体的皮肤,决定物体的表面.THREE的材质有很多种,他们有的和到相机的距离有关,有的和面的法向量角度有关,有的不受光照的影响,有的受到光照的影响会产生反射效 ...
- python数据分析三个重要方法之:numpy和pandas
关于数据分析的组件之一:numpy ndarray的属性 4个必记参数:ndim:维度shape:形状(各维度的长度)size:总长度dtype:元素类型 一:np.array()产生n维 ...
- Java基础面试题及答案(五)
Java Web 64. jsp 和 servlet 有什么区别? jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器 ...
- Mybatis一级缓存和二级缓存总结
1:mybatis一级缓存:级别是session级别的,如果是同一个线程,同一个session,同一个查询条件,则只会查询数据库一次 2:mybatis二级缓存:级别是sessionfactory级别 ...