Java-接口(另类抽象)
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-接口(另类抽象)的更多相关文章
- Java 接口和抽象类差别
		原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ... 
- 我对面向对象设计的理解——Java接口和Java抽象类
		在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ... 
- Java 接口和抽象类区别(写的很好,转了)
		原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是 ... 
- Java 接口和抽象类--缺省模式
		一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ... 
- Java接口和Java抽象类的认识
		在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ... 
- Java接口总结
		接口的定义: 使用interface来定义一个接口.接口定义与类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成,定义接口的基本语法如下: [修饰符] interfac ... 
- java 接口(上)
		1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ... 
- java接口和抽象类
		关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ... 
- python面向对象进阶   反射   单例模式 以及python实现类似java接口功能
		本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ... 
- 初探设计:Java接口和抽象类何时用?怎么用?
		今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ... 
随机推荐
- 网络流二十四题,题解summary
			没有全部写完,有几题以后再补吧. 第一题:最简单的:飞行员配对方案问题 讲讲这个题目为什么可以用网络流? 因为这个题目是要进行两两之间的匹配,这个就可以想到用二分图匹配,二分图匹配又可以用网络流写. ... 
- oracle常用字符函数
			字符函数: concat:(字符连接函数) --字符连接 select concat('con','cat') from dual; select 'co'||'nc'||'at' from dual ... 
- 手把手教你进行Scrapy中item类的实例化操作
			接下来我们将在爬虫主体文件中对Item的值进行填充. 1.首先在爬虫主体文件中将Item模块导入进来,如下图所示. 2.第一步的意思是说将items.py中的ArticleItem类导入到爬虫主体文件 ... 
- 基于胜率矩阵的PageRank排序
			在做博弈模型评估的时候,遇到一个问题是如何评价多个模型的优劣.例如我有训练好的三个围棋模型A,B,C,两两之间对打之后有一个胜负关系,如何对这三个模型进行排序呢?通常对于人类选手这种水平有波动的情 ... 
- 武装你的WEBAPI-OData入门
			本文属于OData系列 目录(可能会有后续修改) 武装你的WEBAPI-OData入门 武装你的WEBAPI-OData便捷查询 武装你的WEBAPI-OData分页查询 武装你的WEBAPI-ODa ... 
- fork...join的用法
			如果希望在仿真的某一时刻同时启动多个任务,可以使用fork....join语句.例如,在仿真开始的 100 ns 后,希望同时启动发送和接收任务,而不是发送完毕后再进行接收,如下所示: initial ... 
- Docker之从零开始制作docker镜像
			以前学习docker是直接docker pull命令直接拉取Linux中已有镜像,并创建容器,添加应用程序,但是docker镜像一开始是怎么来的呢?下面将从零开始介绍整个docker镜像的制作过程(初 ... 
- CSS学习—day1
			摘要:web前端设计三剑客分为是html.CSS.Javascript,前面我们已经对html基础知识做了介绍,它定义了页面基本组成,而CSS则控制网页的样式和布局. 首先,明确一个问题,什么是CSS ... 
- 关于SpringMVC乱码问题
			关于SpringMVC运行Tomcat控制台出现乱码的情况(在网上找到一种方法亲测有效) 找到tomcat文件夹中的conf包下的logging.properties中找到 java.util.log ... 
- wepy 小程序开发(interceptor拦截器 && WXS)
			WePY全局拦截器可对原生API的请求进行拦截. import wepy from 'wepy'; export default class extends wepy.app { constructo ... 
