java--面向接口编程
之前看的一本书的笔记,上周再看设计模式的时候,想到了这篇之前在看某本书时候的笔记。
面向接口编程很重要的一点就是接口回调,用接口声明的变量称作接口变量,属于引用型变量,可以存放实现该接口的类的实例的引用,对象引用。
接口回调:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。
Com com; //接口
ImplCom object; //实现接口的对象
com = object; //接口回调,com会根据对象的不同而实现不同的接口方法,回调类重写的接口方法
接口和abstract类的比较如下:
abstract类和接口都可以有abstract方法。
接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量。
abstract类中也可以有非abstract方法,接口不可以。
在设计程序时应当根据具体的分析来确定是使用抽象类还是接口。abstract类除了提供重要的需要重写的abstract方法外,也提供了子类可以继承的变量和非abstract方法。如果某个重要问题需要使用继承才能更好地解决,比如,子类需要重写父类的abstract方法,还需要从父类继承一些变量或继承一些重要的非abstract方法,就可以考虑用abstract类。如果某个问题不需要继承,只是需要若干个类给出某些重要的abstract方法的实现细节,就可以考虑使用接口。
使用接口编程的最重要的核心思想就是使用接口回调,及接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。
1
2
3
4
|
public interface Advertisement {
public void showAdvertisement();
public String getCorpName();
}
|
2、设计AdvertisementBoard类(广告牌),该类有一个show(Advertisement adver)方法,该方法的参数是接口Advertisement的类型,显然该参数adver可以存放任何实现Advertisement接口的类的对象的引用,并回调类重写的接口方法showAdvertisement()来显示公司的广告词,回调类重写的接口方法getCorpName来获取公司名称。
1
2
3
4
5
6
|
public class AdvertisementBoard{
public void show (Advertisement adver){
System.out.println(adver.getCorpName()+ "广告词" );
adver.showAdvertisement(); //接口回调
}
}
|
实现接口的A公司类:
1
2
3
4
5
6
7
8
|
public class Acorp implement Advertisement {
public void showAdvertisement(){
System.out.println( "AAAAAAAAAAAAAAAAA" );
}
public String getCorpName(){
return "A Corp" ;
}
}
|
实现接口的B公司类:
1
2
3
4
5
6
7
8
|
public class Bcorp implement Advertisement {
public void showAdvertisement(){
System.out.println( "BBBBBBBBBBBBBBBBB" );
}
public String getCorpName(){
return "B Corp" ;
}
}
|
运行住程序:
1
2
3
4
5
6
7
|
public class test (){
public state void main (string args[]){
AdvertisementBoard board = new AdvertisementBoard();
board.show( new Acorp());
board.show( new Bcorp());
}
}
|
最后程序会根据对象的不同调用不同的方法。若想要添加C公司,只要实现接口的方法就可以了。
转载于:https://www.cnblogs.com/silence-hust/p/4147403.html
java--面向接口编程相关推荐
- Java面向接口编程,低耦合高内聚的设计哲学
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...
- java 面向接口编程
定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘.MP3.移动硬盘等设备进行数据交换. 上下文(环境):已知要实现U盘.MP3播放器.移动硬盘三种移动存储设备,要求计算机能同这三种 ...
- Java——面向接口编程
最大的作用:解耦(少修改Java代码,多修改配置文件) 配置文件+反射+接口 来实现 转载于:https://www.cnblogs.com/x54256/p/8457368.html
- Java 面向抽象编程和面向接口编程
以下内容来自<Java 2实用教程>,主编:耿祥义.张跃平 鉴于面向抽象编程和面向接口编程思维培养的重要性,写此博客巩固. 面向抽象编程: 在设计程序时,经常会使用到abstract类,其 ...
- Java中的面向接口编程
面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体 ...
- java继续_Java中消除实现继续和面向接口编程
在匆忙之际理清消除实现继续和面向接口编程这样两个大题目可不是一件轻易的事情,尤其考虑到自身的熟悉水平.坦白的说,这又是一篇"炒冷饭"的文章,但这"冷饭"又确实不 ...
- JAVA面向接口的编程思想与具体实现
面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的. 问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就 ...
- 黑马java教程是什么_Java教程:揭秘什么是面向接口编程
先用一个案例来给大家说明一下面向接口编程. 案例:有一个电脑类(Computer),电脑除了有基本的开机关机功能外,还有连接任何外接设备的功能,比如能电脑能连接外置键盘(Keyboard),鼠标(Mo ...
- java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程
多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...
- java 接口,接口的特性,接口实现多态,面向接口编程
package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式* 形式:public interface 接口名称{}* 接口不能拥有构造方法,不 ...
最新文章
- 程序员敲代码时,戴着耳机究竟在听什么?
- mysql主备模型,MySQL数据同步【双主热备】
- 我们是在搞学术,还是被学术搞?
- python3.5下载-Python3.5.2
- IOS delegate 委托 使用 两个View之间传数据
- 微软网站下载XPerf没有成功
- 笛卡尔函数_笛卡尔,伯克利和函数式React式编程
- Android Audio System 架构初探(好文)
- MySQL的回表查询与索引覆盖查询
- 思维导图的了解和使用
- linux+mint+xfce开WiFi,为LinuxMint XFCE增加一键共享
- mysql d是什么意思_是mysqld意思
- Vant => van-field校验手机号 邮箱校验
- 【Paper】WISDM:Activity Recognition using Cell Phone Accelerometers
- 怎么能跳过苹果服务器降级系统,苹果ios11手机怎样将系统降级?简单三步即可完成降级!...
- HyperLynx(十八)DDR(一)DDR简介和DDR的数据仿真
- 如何“看懂”图片?谈出海企业的视觉识别体系搭建
- 差距不止一星半点,Github星标85K的性能优化法则圣经
- c/c++ substr()函数
- matlab与simulink结合,code-matlab 利用SIMULINK和M函数相结合的方式仿真BFSK 调制在 联合开发网 - pudn.com...
热门文章
- 一个Lex/Yacc完整的示例(可使用C++)
- 拓扑排序 - 项目管理
- CF-778 C.Peterson Polyglot (Trie合并)
- facenet + Mtcnn 实现人脸识别(实现步骤)
- 很多人都不知道学了c/c++到底能做什么?让大牛来告诉你............
- 8086CPU汇编:一般的标号与直接定址标号
- [BUUCTF-pwn]——bbys_tu_2016
- android 百度定位开启后fragment 不显示,解决Android百度地图MapView在ViewPager中Fragment切换黑屏问题...
- ftpClient的连接超时设置(setConnectTimeout,setSoTimeout)
- ServiceMix中文教程