「java接口处理流程设计」java接口构造方法
今天给各位分享java接口处理流程设计的知识,其中也会对java接口构造方法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、在java中,什么是接口,接口的特点是什么
- 2、Java怎么处理接口类
- 3、一道题Java中抽象类和接口的设计与使用,紧急!多谢!
- 4、JAVA中各类接口怎么使用啊?
- 5、Java 接口程序
- 6、关于JAVA接口程序设计
在java中,什么是接口,接口的特点是什么
Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
一.接口含义:
1.Java接口,Java语言中存在的结构,有特定的语法和结构;2.一个类所具有的方法的特征集合,是一种逻辑上的抽象。
前者叫做“Java接口”,后者叫做“接口”。
Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。
Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。
二.为何用接口Java是一种单继承的语言,若要给已有父类的具体类增加新功能,在OCP原则下,解决是给它的父类加父类,或者给它父类的父类加父类,直到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
当有了接口,以上例子中,就不需要维护整个等级结构中的所有类了.
三.接口具胡可插入性:
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。
正是有了接口,使得Java单继承性有了新的扩展的可能(变向地实现多继承);三.类型等级结构Java接口(以及抽象类)一般用来作为一个类型的等级结构的起点。
如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。
四.Java接口分类
1、普通接口(含有方法定义)public interface ActionListener{public abstract void actionPerformed(ActionEvent event);}
2、标识接口(无任何方法和属性定义)标识接口是没有任何方法和属性的接口.标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。
public interface Serializable{};
3、常量接口是指用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量。
public interface AppConstants{public static final DATA_SOURCE_NAME="test";public static final USER_NAME="test";public static final PASSWORD="test";}
五.接口的特点
1、Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔)
2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化
3、Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法
4、接口中没有构造方法,不能被实例化5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口
6、Java接口必须通过类来实现它的抽象方法
7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类
8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例
9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.
六.Java接口和Java抽象类区别面向对象设计的重点在于抽象。抽象类与接口都位于继承树的上层。
相同点:
1、代表系统的抽象层,当一个系统使用一颗继承树上的类时,应该尽量把引用变量声明为继承树的上层抽象类型,这样可以提高两个系统之间的送耦合
2、都不能被实例化
3、都包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不包含方法体不同点:
1、最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以;这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。
可以向抽象类里加入一个新的具体方法,所有的子类都自动得到这个方法;但Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译,必需手动给每个实现了该接口的类加上该方法的实现;
2、抽象类的实现只能由子类给出,也即该实现只能在抽象类定义的继承的等级结构中;所以抽象类作为类型定义工具的效能大打折扣。
Java接口,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
以上看出:Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。
3、结合1、2点中抽象类和Java接口的各自优势,具精典的设计模式就出来了:
声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。
在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。
七.使用接口和抽象类的总体原则:
1、用接口作为系统与外界交互的窗口站在外界使用者(另一个系统)的角度,接口向使用者承诺系统能提供哪些服务,站在系统本身的角度,接口制定系统必须实现哪些服务,接口是系统中最高层次的抽象类型.通过接口交互可以提高两个系统之间的送耦合系统A通过系统B进行交互,是指系统A访问系统B时,把引用变量声明为系统B中的接口类型,该引用变量引用系统B中接口的实现类的实例。
public interface B { }
public class C implements B { }
public class A { B a = new C(); }
2、Java接口本身必须非常稳定,Java接口一旦制定,就不允许随遇更加,否则对外面使用者及系统本身造成影响3、用抽象类来定制系统中的扩展点,抽象类来完成部分实现,还要一些功能通过它的子类来实现
Java怎么处理接口类
接口和实现类通过implements关键字关联起来。
举例:
1、接口定义
public interface IA{//定义一个接口IA public void show();//定义接口中的方法定义show}
2、实现类
public class A implements IA{//定义类A,通过implements实现接口IA public void show(){//实现show方法 System.out.println("IA"); }}
一道题Java中抽象类和接口的设计与使用,紧急!多谢!
学生接口
public interface StudentManageInterface {
//设置学生每学期的学费
void setFee(int tuition);
//获取学生每学期的学费
int getFee();
}
老师接口
public interface TeacherManageInterface {
//设置教师月工资
void setPay(int salary);
//获取教师月工资
int getPay();
}
研究生类
public class Graduate implements StudentManageInterface, TeacherManageInterface {
private String name;
private String sex;
private int fee;
private int pay;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public int getFee() {
return fee;
}
@Override
public void setFee(int tuition) {
this.fee = tuition;
}
@Override
public int getPay() {
return pay;
}
@Override
public void setPay(int salary) {
this.pay = salary;
}
public String getMessage(){
if((pay*12-fee)20000){
return "这名研究生的名字是:"+name+",性别是:"+sex+",今年的学费是:"+fee+",年工资是:"+12*pay+",不需要贷款!";
}
return "这名研究生的名字是:"+name+",性别是:"+sex+",今年的学费是:"+fee+",年工资是:"+12*pay+",需要贷款!";
}
}
测试类
public class Test {
public static void main(String[] args) {
Graduate graduate = new Graduate();
//设置姓名
graduate.setName("张翠花");
//设置性别
graduate.setSex("女");
//设置每月工资
graduate.setPay(2500);
//设置每月学费
graduate.setFee(15000);
System.out.println(graduate.getMessage());
}
}
JAVA中各类接口怎么使用啊?
我们都知道,在JAVA中可以使用继承,但是却不能实现多重继承,但是在现实中,我们大多数的程序都会使用到多重继承,因为这样可以大大节约我们的时间和精力。那么JAVA中没有啊,该怎么办啊?呵呵,不用担心,JAVA中可以使用接口。
说白了,接口其实就是一个行为模板,但是是需要由其他类来实现它的行为的,因为接口是不能有任何具体方法的,我们要做的是指定一个类必须做什么,而不是规定它如何去做。我们要实现一个接口,必须要保证接口定义的类是创建完整的一套方案,JAVA允许开发人员充分利用多态性的一个接口多个方法。
Java中为什么要使用接口?使用接口的好处?
接口是用来规范类的
它可以避免类在设计上的不一致
这在多人合作的开发中犹为重要
就比如接口中有A方法
那么实现这个接口就必须实现A方法
这就形成了一种规范
Java 接口程序
你这个命题是典型的策略模式(设计模式中的一种)
不同的交通工具就是每一个装在“锦囊”(接口)中的“锦囊妙计”(策略)
你可以搜索一下关键字“策略模式”
也可你看一下我这个故事:
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
先说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用JAVA 程序
怎么表现这个呢?
计是同一类型的东东,那咱就写个接口:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
*
*/
public interface IStrategy {
//每个锦囊妙计都是一个可执行的算法
public void operate();
}
您的设计模式
第 5 页
然后再写三个实现类,有三个妙计嘛:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 找乔国老帮忙,使孙权不能杀刘备
*/
public class BackDoor implements IStrategy {
public void operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 求吴国太开个绿灯
*/
public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println("求吴国太开个绿灯,放行!");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 孙夫人断后,挡住追兵
*/
public class BlockEnemy implements IStrategy {
public void operate() {
您的设计模式
第 6 页
System.out.println("孙夫人断后,挡住追兵");
}
}
好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 计谋有了,那还要有锦囊
*/
public class Context {
//构造函数,你要使用那个妙计
private IStrategy straegy;
public Context(IStrategy strategy){
this.straegy = strategy;
}
//使用计谋了,看我出招了
public void operate(){
this.straegy.operate();
}
}
然后就是赵云雄赳赳的揣着三个锦囊,拉着已步入老年行列的、还想着娶纯情少女的、色迷迷的刘老
爷子去入赘了,嗨,还别说,小亮的三个妙计还真是不错,瞅瞅:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
*/
public class ZhaoYun {
/**
* 赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计
*/
public static void main(String[] args) {
Context context;
您的设计模式
第 7 页
//刚刚到吴国的时候拆第一个
System.out.println("-----------刚刚到吴国的时候拆第一个-------------");
context = new Context(new BackDoor()); //拿到妙计
context.operate(); //拆开执行
System.out.println("\n\n\n\n\n\n\n\n");
//刘备乐不思蜀了,拆第二个了
System.out.println("-----------刘备乐不思蜀了,拆第二个了-------------");
context = new Context(new GivenGreenLight());
context.operate(); //执行了第二个锦囊了
System.out.println("\n\n\n\n\n\n\n\n");
//孙权的小兵追了,咋办?拆第三个
System.out.println("-----------孙权的小兵追了,咋办?拆第三个
-------------");
context = new Context(new BlockEnemy());
context.operate(); //孙夫人退兵
System.out.println("\n\n\n\n\n\n\n\n");
/*
*问题来了:赵云实际不知道是那个策略呀,他只知道拆第一个锦囊,
*而不知道是BackDoor这个妙计,咋办? 似乎这个策略模式已经把计谋名称写出来了
*
* 错!BackDoor、GivenGreenLight、BlockEnemy只是一个代码,你写成first、second、
third,没人会说你错!
*
* 策略模式的好处就是:体现了高内聚低耦合的特性呀,缺点嘛,这个那个,我回去再查查
*/
}
}
就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了,
还有一个就是扩展性,也就是OCP 原则,策略类可以继续增加下去,只要修改Context.java 就可以了,这
个不多说了,自己领会吧。
以上摘自网络,详情参考 设计模式.pdf
里面还有类图
关于JAVA接口程序设计
你确定答案是正确的?
我自己的回答,不知道是不是正确答案,而且感觉你的题不全。
水平有限,错误请指正。
个人感觉,这题主要是考察,接口,实现,继承,多态。
(以下放在T.java你可以运行看一下。)
--------------------
interface FlyBehavior {
public void fly();
}
class SubSonicFly implements FlyBehavior {
public void fly() {
System.out.println("亚音速飞行!");
};
}
class SuperSonicFly implements FlyBehavior {
public void fly() {
System.out.println("超音速飞行!"); //此处打错一个,应该是超音速飞行吧
};
}
interface TakeOffBehavior {
public void takeOff();
}
class VerticalTakeOff implements TakeOffBehavior {
public void takeOff() {
System.out.println("垂直起飞!");
};
}
class LongDistanceTakeOff implements TakeOffBehavior {
public void takeOff() {
System.out.println("长距离起飞!");
};
}
abstract class AirCraft { //既然是abstract的了,怎么没有abstract的方法
protected FlyBehavior flyBehavior = new SubSonicFly(); //这里应该考查的是关于多态的知识吧
protected TakeOffBehavior takeOffBehavior = new LongDistanceTakeOff(); //这里也应该考查的是关于多态的知识吧
public abstract void fly(); //就把它设成abstract的吧,反正它也不实现什么,就让子类去做具体实现吧。
public abstract void takeOff(); //把它也设成abstract的吧
}
class Helicopter extends AirCraft {
public Helicopter() {
flyBehavior = new SuperSonicFly(); //这里因为是从父类继承的。所以不用在定义了。
takeOffBehavior = new VerticalTakeOff();
}
@Override
public void fly() { //实现父类的方法
flyBehavior.fly();
}
@Override
public void takeOff() { //实现父类的方法
takeOffBehavior.takeOff();
}
}
public class T{ //在这里,我增加了一个main方法,来观察效果
private static Helicopter he = new Helicopter();
public static void main(String[] args){
he.fly();
he.takeOff();
}
}
java接口处理流程设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java接口构造方法、java接口处理流程设计的信息别忘了在本站进行查找喔。