1.1 特点

  • 用interface定义
  • 接口中所有成员变量都默认是由public static final修饰的
  • 接口中所有方法都默认是由public abstract修饰的
  • 接口没有构造器
  • 接口采用多层继承机制
  • java本身不支持多重继承,我们一般使用接口来做到多重继承的效果

1.2 定义举例

public interface Runner{
(public static final) int ID=1;
(public abstract) void start();
(public abstract) void run();
(public abstract) void stop();
}
public interface Player{
(public static final) int AD=1;
(public abstract) void begin();
(public abstract) void play();
(public abstract) void end();
}

1.3 接口实现举例

子类可以实现多个接口,多个接口用逗号隔开
public class Test implements Player,Runner{
public void start(){ }
public void begin(){ }
}

1.4 接口可以继承接口

public interface StudentPlayer extends Player{

}

1.5 继承+实现

  • 如果一个类既继承父类,又实现接口,那么先继承,再实现

1.6 接口与抽象类

  • 接口能做的事用抽象类也能做,为什么用接口?

    • 新增方法上

      • 抽象类新增抽象方法存在的问题

        • 子类继承父类 父类新增抽象方法 则子类必须实现父类新增的抽象方法或者子类改为抽象类
      • 接口新增抽象方法
        • 子类继承父类 父类新增接口 而子类只需按需要新增抽象方法
    • 用java描述会唱歌的厨子是个老师
      • 分析:不用接口就是使用继承传递

        • 从Person类—Singer类—Cook类-Teacher类
    • 使用接口描述 Teacher类-Person类 然后Cooking接口,Sing接口实现接口方法

1.7 举例如下

abstract class Person
int age
String name
int sex
abstract void showinfo()
----------------------------
interface Cooking
void fry()
----------------------------
interface Sing
void singing()
----------------------------
class SCTeacher
String course
void showinfo()
void fry()
void singing()

1.8 对象的多态

一个类可以实现多个无关接口
Cooking c=new SCTeacher()
c.fry()
Sing s=new SCTeacher()
s.singing()

1.9 接口与抽象类何时用

  • 如果实现接口的类中没有实现接口中的全部方法,必须将此类定义为抽象类
  • 抽象类是对于一类事物的高度抽象,其中既有属性也有方法
  • 接口是对方法的抽象,也就是对一系列动作的抽象
  • 当需要对一类事物抽象的时候,应该是使用抽象类,好形成一个父类
  • 当需要对一系列的动作抽象,就使用接口,需要使用这些动作的类去实现相应的接口

Java-接口(另类抽象)的更多相关文章

  1. Java 接口和抽象类差别

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...

  2. 我对面向对象设计的理解——Java接口和Java抽象类

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  3. Java 接口和抽象类区别(写的很好,转了)

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是 ...

  4. Java 接口和抽象类--缺省模式

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

  5. Java接口和Java抽象类的认识

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  6. Java接口总结

    接口的定义: 使用interface来定义一个接口.接口定义与类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成,定义接口的基本语法如下: [修饰符] interfac ...

  7. java 接口(上)

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

  8. java接口和抽象类

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

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

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

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

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

随机推荐

  1. C语言程序设计实验报告三

    C程序设计实验报告 姓 名:张美盛 实验地点:家 实验时间:2020年3月29日 实验项目:4.3.1 If语句的应用 4.3.2 switch-case的应用 4.3.3 switch-case嵌套 ...

  2. 支付宝小程序serverless---获取用户信息(头像)并保存到云数据库

    支付宝小程序serverless---获取用户信息(头像)并保存到云数据库 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 我又 ...

  3. K - Painful Bases 状压dp

    Painful Bases LightOJ - 1021 这个题目一开始看,感觉有点像数位dp,但是因为是最多有16进制,因为限制了每一个数字都不同最多就有16个数. 所以可以用状压dp,看网上题解是 ...

  4. NEON中的vshr vshl vext中的位移参数必须为编译时字面常量

    NEON中的vshr指令中位移数量参数必须为compile time literal constant,因为该参数是被encoded as part pf ARM instruction itself ...

  5. 【带着canvas去流浪(15)】threejs fundamentals翻译系列1-scene graph

    示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 目录 ...

  6. 学习笔记:平衡树-splay

    嗯好的今天我们来谈谈cosplay splay是一种操作,是一种调整二叉排序树的操作,但是它并不会时时刻刻保持一个平衡,因为它会根据每一次操作把需要操作的点旋转到根节点上 所谓二叉排序树,就是满足对树 ...

  7. 【数论基础】素数判定和Miller Rabin算法

    判断正整数p是否是素数 方法一 朴素的判定   

  8. 6-JVM常用工具和优化

    JVM 常用工具和优化 JDK 自带的 jconsole jvisualvm 三方的工具 arthas 调优关注点(内存.GC): 内存 MAT XElephant 在线:perfma GC 拿到GC ...

  9. webpack-dev-server简记

    webpack -v 3.4.1 npm -v 3.10.10 /////////////////////////////////////// webpack的webpack-dev-server可以 ...

  10. MyCat水平分库

    一.什么是水平分库 将一张表水平切分到多个库中 1.1分片原则 1.需要分片的表是少数的 2.能不切分尽量不要切分 3.日志表可以采取归档方式 4.选择合适的切分规则和分片建,确保数据分片均匀,否则依 ...