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.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...
随机推荐
- spring mvc 中使用session
举例:用户登录成功之后,把用户对象放置到session中 第一步,用户登录成功之后把用户对象首先放到Model中 第二步,要在控制器上加SessionAttributes注解,把放到model中的对象 ...
- Spring Cloud学习 之 Spring Cloud Hystrix(断路器原理)
断路器定义: public interface HystrixCircuitBreaker { // 每个Hystrix都通过它判断是否被执行 public boolean allowRequest( ...
- [js进阶1]-数据类型
基本数据类型 js 总的有7中数据类型,包括基本类型和引用类型 基本类型 6 种 number boolean string null undefiend symbol 前5种类型统称为原始类型 sy ...
- 201771010113 李婷华 《面向对象程序设计(java)》第七周学习总结
一.理论知识学习部分 1.动态绑定:又称为运行时绑定.程序在运行时会自动选择调用哪个方法. 2.静态绑定:如果方法是private.static.final修饰的,或者是构造器,那么编译器能准确地判断 ...
- 深度剖析西门子PLC的开放式TCP通信
对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌:而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式.刚好手头有一款西门子的200Sma ...
- 三分钟快速搭建分布式高可用的Redis集群
这里的Redis集群指的是Redis Cluster,它是Redis在3.0版本正式推出的专用集群方案,有效地解决了Redis分布式方面的需求.当单机内存.并发.流量等遇到瓶颈的时候,可以采用这种Re ...
- 【蓝桥杯C组】备赛基础篇之前缀和算法
算法介绍: 设a为数组,a[i]中储存的是前i 个数(包括自己)的总和,相当于我们中学学过的前N项和,那么,弄成这样的好处是什么呢?假如我们要多次访问一段区间的总和,难道每次都加一次进行重复运算吗?? ...
- 基于Vue搭建自己的组件库(1)
本项目演示地址:https://husilang.github.io/zm-ui 项目参考文章:从零开始搭建Vue组件库 VV-UI 项目的初衷是学习怎么封装一个基于Vue的UI组件库,顺便记录每个步 ...
- Django路由之url分组(命名)匹配
分组(命名)匹配 urls.py路由配置文件中: urlspatterns中想捕获正则表达式匹配的结果用来出传递给views.py视图函数文件使用,需要用到分组匹配,或者使用第三个参数python字典 ...
- python3.x 基础五:模块
1.定义 模块:本质是.py结尾的python文件,从逻辑上组织python代码,可以是变量,函数,类,逻辑,目的是实现一个功能,test.py 对应模块名:test 包:从逻辑上组织模块的,本质就是 ...