「java接口处理流程设计」java接口构造方法

博主:adminadmin 2022-12-31 08:12:09 548

今天给各位分享java接口处理流程设计的知识,其中也会对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接口处理流程设计的信息别忘了在本站进行查找喔。