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. D. Misha, Grisha and Underground 树链剖分

    D. Misha, Grisha and Underground 这个题目算一个树链剖分的裸题,但是这个时间复杂度注意优化. 这个题目可以选择树剖+线段树,时间复杂度有点高,比较这个本身就有n*log ...

  2. 【HBase】集群搭建/安装部署

    目录 第一步:下载对应的HBase安装包 第二步:上传压缩包并解压 第三步:修改配置文件 第四步:安装包分发到另外两台机器 第五步:三台机器创建软连接 第六步:三台机器添加环境变量 第七步:启动HBa ...

  3. 【Hadoop离线基础总结】伪分布模式环境搭建

    伪分布模式环境搭建 服务规划 适用于学习测试开发集群模式 步骤 第一步:停止单节点集群,删除/export/servers/hadoop-2.7.5/hadoopDatas,重新创建文件夹 停止单节点 ...

  4. Git使用教程之SSH连接方式配置(二)

    什么是GitHub?这个网站就是提供Git仓库托管服务的. 什么是SSH Key?你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,大白话理解就是这两个仓库如果要进行远程同步,则我们需 ...

  5. linux-rpm强制安装跳过依赖包

    [root@localhost ~]# rpm -ivh tigervnc-1.10.80-4.20200317git8b4be5fd.el7.x86_64.rpm --nodeps --force ...

  6. 黑马程序员_毕向东_Java基础视频教程——算术运算符小点(随笔)

    算术运算符小点 ​ 取模 class Test{ public static void main(String[] args){ System.out.println( 1 % -5); System ...

  7. 最短路径——dijkstra算法代码(c语言)

    最短路径问题 看了王道的视频,感觉云里雾里的,所以写这个博客来加深理解.(希望能在12点以前写完) 一.总体思想 dijkstra算法的主要思想就是基于贪心,找出从v开始的顶点到各个点的最短路径,做法 ...

  8. Python-控制台实现简单的名片管理系统

    通过Python开发一个基于控制台的名片管理系统,具体看下图以及相关代码. cards_main.py文件中提供程序的入口 import cards_toolslx while True: # TOD ...

  9. SpringMVC底层执行原理

    一个简单的HelloSpringMVC程序 先在web,xml中注册一个前端控制器(DispatcherServlet) <?xml version="1.0" encodi ...

  10. 「雕爷学编程」Arduino动手做(25)——MQ2气敏检测模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...