java接口实现口

以下试题来自:
填空题Java接口内的方法都是公共的、______的,实现接口就要实现接口内的所有方法。 抽象
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 extends Thread2.填空题 java.lang.object3.填空题 JComponent4.填空题 数据5.填空题 内部类
热门相关试卷
最新相关试卷java接口作用是什么?_百度知道
java接口作用是什么?
一直对java中接口的作用不是太明了。虽说一个类可以implements多个接口,但接口本身只是定义了几个方法,没有任何实际的意义,具体的实现还是要在实现它的类中进行。这样的话,接口还有什么意义呢?
举个例子来说,现有
我有更好的答案
接口是java中的一大特性和一大支柱性的优点接口用来别具体的类实现,会自动继承接口中的抽象方法给这类继承他的类接口有点像是复制的意思.只不过是java中是这么写罢了现在已经开始&面向接口编程&时代,利用接口来解耦接口中的方法一定都会被继承他的类实现`,如果少继承了或者没有继承`会报错比如说`你写了10个类,每个类中都需要一些同名且返回值一样的方法,这时候就可以用接口,把这些方法全部写在一个接口中,让这10个类去实现,这样10个类中就有了这些方法`只需要自己具体的去填写方法内部了
采纳率:65%
来自团队:
不需要改原来的代码。就像你问的接口的最主要的作用是达到统一访问.read();要是我类名里写U盘,就读U盘,如果我用接口,我上面就可以one.method1();是吧;这样a,而这个名字可以从属性文件里读,你写哪个就用哪个了,呵呵?那样我new a();就是用a的方法,new b()就是用b的方法这样不方便吗,插什么读什么,就是这个原理.你这样想,我做一个USB接口,有个read()抽象方法?这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同我用接口来定义对象不就可以做到统一访问了吗?接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了,都有个method1的方法,就是在创建对象的时候用接口创建,写mp3就读mp3,就和你的USB接口一样,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了
本回答被提问者采纳
这里只要是实现了接口A的对象都可以做为参数;} class B 和 class C 都实现了接口 a class D { public void d(A a){ a.print();} //这个方法要求传一个A对象的引用 ,会调用这个对象所实现的print()方法,有点像继承重载,但是接口更灵活,可以实现多个接口接口是 java 多态的一种形式 interface A { public void print()
java接口里定义的方法是public abstract 型的。是抽象的。你要在具体的实类中对它实例化。这个实例化的结果就是接口的作用的体现。比如,两个运动员,在跑和跳的这项能力中,一个短跑和三级跳很厉害。一个长跑和立定跳远很厉害。可如下编程: 定义一个运动的接口(Interface Sport)。里面有跑(void run())和跳(void jump())两个抽象方法。再定义两个类Athlete1和Athlete2。Athlete1中,将“跑”实例化为“短跑”,将“跳”实例化为“三级跳”。Athlete2中,将“跑”实例化为“长跑”,将“跳”实例化为“立定跳远”。将张三创建为类Athlete1的对象,将李四创建为类Athlete2的对象。
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
java接口的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口与类相似点:
一个接口可以有多个方法。
接口文件保存在 .java 结尾的文件中,文件名使用接口名。
接口的字节码文件保存在 .class 结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
抽象类和接口的区别
1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
接口的声明
接口的声明语法格式如下:
[可见度] interface 接口名称 [extends 其他的类名] {
Interface关键字用来声明一个接口。下面是接口声明的一个简单例子。
NameOfInterface.java 文件代码:
import java.lang.*;
public interface NameOfInterface
接口有以下特性:
接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
接口中的方法都是公有的。
Animal.java 文件代码:
interface Animal {
public void eat();
public void travel();
接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
实现一个接口的语法,可以使用这个公式:
Animal.java 文件代码:
...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
MammalInt.java 文件代码:
public class MammalInt implements Animal{
public void eat(){
System.out.println(&Mammal eats&);
public void travel(){
System.out.println(&Mammal travels&);
public int noOfLegs(){
public static void main(String args[]){
MammalInt m = new MammalInt();
m.travel();
以上实例编译运行结果如下:
Mammal eats
Mammal travels
重写接口中声明的方法时,需要注意以下规则:
类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
如果实现接口的类是抽象类,那么就没必要实现该接口的方法。
在实现接口的时候,也要注意一些规则:
一个类可以同时实现多个接口。
一个类只能继承一个类,但是能实现多个接口。
一个接口能继承另一个接口,这和类之间的继承比较相似。
接口的继承
一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。
下面的Sports接口被Hockey和Football接口继承:
public interface Sports
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
public interface Football extends Sports
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
public interface Hockey extends Sports
public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
Hockey接口自己声明了四个方法,从Sports接口继承了两个方法,这样,实现Hockey接口的类需要实现六个方法。
相似的,实现Football接口的类需要实现五个方法,其中两个来自于Sports接口。
接口的多继承
在Java中,类的多继承是不合法,但接口允许多继承,。
在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。
如下所示:
public interface Hockey extends Sports, Event
以上的程序片段是合法定义的子接口,与类不同的是,接口允许多继承,而 Sports及 Event 可能定义或是继承相同的方法
最常用的继承接口是没有包含任何方法的接口。
标识接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。
标识接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。
例如:java.awt.event 包中的 MouseListener 接口继承的 java.util.EventListener 接口定义如下:
package java.util;
public interface EventListener
没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:
建立一个公共的父接口:正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。
向一个类添加数据类型:这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。
9个月前 (05-23)
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
&&&走刀口&&805***4个月前 (10-23)
记住登录状态
重复输入密码本帖已被设为精华帖!
好久没在社区发表过文章了,今天的目的是来取经的。
不只是回归验证
更详尽的用例覆盖度
属于单测范畴,能重复执行
Http 接口测试框架的重复执行是不太理想的(传参固定,没有清理数据操作)
举例:第一次拉黑某用户是可以拉黑成功的,再次执行拉黑某用户就失败了,因为已经被拉黑过
本版本的设计初衷是解耦的
举例:拉黑过某用户,断言后,会清理数据,就是会取消拉黑,下次执行就能拉黑成功
更优秀的配置管理
编译:maven
请求:rxjava + retrofit
数据库:SQL Server(与后端同步)
断言:TestNG + 自定义
执行:TestNG
报告:ExtentReports
接口层设计
Interface A
Interface B
Interface C
Type(模块包)
模块A(里面是该模块下的所有接口请求)
测试集设计
Module A Suite
Module B Suite
Group A Suite
Group B Suite
Other A Suite
Other B Suite
用例层设计
同接口层结构一致(除模块包)
偷懒过程一
Java接口测试不同于Python接口测试,Java需要一个实体类来映射接口返回结构,所以需要一个实体类。
起初是人工编写,写了2个后受不了了,工作量太大
然后装了个GsonFormat,速度有些许提升,写了一个模块后,又受不了
第一步:Python爬取接口文档,生成接口实体类(含请求参数,不含实体结构,原因是文档的结构非最新,无奈)
第二步:框架层增加JavaBean生成器,由BeanPoet直接生成实体类输出到output文件夹
用例打上注解就能生成实体类
public class GetTokenCase {
public void testGetToken() {
偷懒过程二
请求实体的封装又是一个工作量巨大的地方
起初是人工写方法,一个参数一个参数的写,简直要命
然后利用IDE的Live Templates自定义一些方法
例如输入pstm就能产出下面一堆代码,只需操作具体的参数即可
public static &T& T method(Class&T& clazz) {
Map&String, Object& params = new HashMap&&();
params.put(, );
String name = NameUtils.toUpperCaseForFirst(NameUtils.getMethodName());
String path = TYPE + "/" + name;
return RequestEmitter.emit(clazz, params, path);
利用Python爬取接口文档的同时,封装好调用方法,直接输出到文件
改进后的样子
public static &T& T getDeliveryAddressList(int start, Class&T& clazz) {
Map&String, Object& params = new HashMap&&();
params.put(GetDeliveryAddressListEntity.START, start);
String name = NameUtils.toUpperCaseForFirst(NameUtils.getMethodName());
String path = TYPE + "/" + name;
return RequestEmitter.emit(clazz, params, path);
由于各种封装,用例的编写变得异常简单,只需关注具体的业务逻辑即可
一种巧妙的设计
必需遵循规则才不会出错
一个接口:
base url:
path url:movie/top250
模块:movie
接口:top250
实体类已经自动化生成
请求封装已经自动化生成
DB层还未实现
用例的设计需要取经
对于接口用例的设计
数据驱动(一个接口相同的传参,不同的测试数据,但是返回的结果结构不一定是一样的,不太好验证?)
精确设计(能自定义各种断言,但是需要设计众多用例?传参一样,但是数据不一样,返回结构有差异,除非断言不验证那么细?)
数据的准备方式
测试录入(解耦,需要操作数据库,但是线上监控怎么玩?)
业务依赖(一个接口的失败,可能影响其他接口的测试结果)
最重要的还是接口用例的设计
最重要的还是接口用例的设计
最重要的还是接口用例的设计
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
好帖子必须顶一个
正如差异性说的,取经处 考虑过于复杂,是不是违背了初衷
哈哈。。。懒人推动世界,加油,小伙,我们都看好你!!!!
求GitHub地址
将本帖设为了精华贴
楼主开源吗,还有就是为什么不采用reportng报表形式呢
接口加密,场景设计,关联这些地方怎么处理的?
因为保密问题,源码暂时还不能发出来,所以看不到加密的处理
大概说下:每次请求的token都是重新计算的,可以参考之前的http接口测试框架
上面我也说了我的思路,所以这个就是我想得到的答案
初衷是解耦的,所以没有任何关联
任何接口都可以单独运行,不依赖其他接口
因为那个颜值不够,就这么简单
暂时还发不了
暂时还发不了哦
你有什么好的建议吗
赶紧下班回家,老板都给你放假了
懒成一头猪了
恩,我最近也在弄这块,场景设计我基于PICT二次开发,加密规则封装一个公用类
感觉搞复杂了....
那块复杂了,我参考参考
请问下关于重复执行请问例子中“取消拉黑” 是通过另一个取消拉黑的接口实现还是其他比如清理数据库实现的;
有时候会发现一些接口流程很复杂,干净的清理数据库几乎不可能,有些又没有反向接口(其实下次运行也依赖了上次的结果了),在想如果有独立的测试环境如果能实现每次自动化前能回退到测试前可能会更好。
reset Assured
感觉能省你不少事情
说实话看完,并没有感受到亮点在哪,可能是每个公司业务不太一样,感觉没有说清楚怎样能让使用者能更高效的编写接口自动化用例,说白了不知道用你这样做跟用普通的工具框架优势在哪~
爬接口 文档生成测试用例?
另外接口用例设计的问题:
主要还是要上手快,要在批量修改新增的场景上面想想办法。
还有就是考虑用例的管理和调试怎么样方便,复用性高等等
数据传递的话可以考虑自己写一个 数据工厂。
另外我感觉应该是把复杂的东西简单化 而不是简单的东西上手难!
非线上环境,应该可以通过操作数据库来实现
线上环境,不管就好了吧,我目前还不知道怎么玩
能麻烦举例一下吗
亮点这东西不纠结了,可能我没表达清楚,可能因为没源码的缘故,初衷就是解耦。
另外用例的编写是这样的,个人认为够简单了
楼主,我在
Appium 开源框架 appium+python (二) 支持多设备并行 + 性能监控 +webserver 监控 crash日志
这篇帖子里看到了你写的监控闪退日子的jar包源码,但是下载源码后,发现部分模块里没写代码啊。比如
跟你帖子上贴出来的这个模块一比,发现主要功能的代码都没有啊,能不能重新更新下啊
想问下这个libs是appium+python自动化工程下的libs吗?能不能截图说明下,我只看到Lib文件夹
crashhandler目录下,你把整个项目下载下来就知道了
我是想问,下载你的源码并更改host、port后打包成jar文件,那么打包后的这个jar文件要怎么利用到appium+python实现多设备并行的框架里才能捕获闪退日志,该放到哪里用;
我是初学。看了几天了,把你写的appium+python实现多设备并行的代码理解的差不多了,就是这个抓取日志搞不懂。
求lose大神详细指导下,谢谢
又认真看了你在那篇帖子里的各种回复,总结了一下,我现在是这样理解的,你看对不对;
把CrashHandler打包成jar,然后把这个jar引用到需要测试的apk源码的libs文件下。再去测试这个包含了CrashHandler.jar的app;如果app闪退就会发送日志到自动化框架的web_server;然后自动化框架才能拿到日志对日志进行处理是吗?
lose大神,帮我看看吧,我都研究你这个自动化框架好几天了,就剩这个抓日志没搞定了,万分感谢啊!!!!!!!!!!!!!!!!!!!!
顶!!!!
楼主棒棒的!
要是能开源出来学习学习就好了
你采用是什么报表,比reportng好看多了
ExtentReports 文中有提到
偷懒过程1和2实在是太适合我了,最近也是用java搞接口测试,也是遇到需要有对应接口返回结构的实体类,写一两个实体时还好,写多了简直很难走下去,而且接口返回的json结构又很复杂,期望楼主能单独挑1和2出来详细再介绍一遍~
后方可回复, 如果你还没有账号请点击这里 。
heyniu (Heyniu)
第 9591 位会员 /
共收到 33 条回复谢谢帮忙啊!把接口给我讲一下啊!要清楚啊!!
我定重分酬谢!!
接口(inteface )
如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
可以使用extends来继承接口的常量和抽象方法,但它与类中的extends不同,它可以继承有多个父接口(多重继承),各父接口间用逗号隔开。
接口中的所有常量必须是pulic static final,方法必须是pulic astact,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的
定义接口
修饰符 inteface 接口名 [extends 父接口列表]
常量域声明
抽象方法声明
}
class cat implements Animal
{
pulic void shout ()
int(“喵喵”);
}
}
实现接口
implements
一个类可以实现若干个接口
非抽象类必...
接口(inteface )
如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
可以使用extends来继承接口的常量和抽象方法,但它与类中的extends不同,它可以继承有多个父接口(多重继承),各父接口间用逗号隔开。
接口中的所有常量必须是pulic static final,方法必须是pulic astact,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的
定义接口
修饰符 inteface 接口名 [extends 父接口列表]
常量域声明
抽象方法声明
}
class cat implements Animal
{
pulic void shout ()
int(“喵喵”);
}
}
实现接口
implements
一个类可以实现若干个接口
非抽象类必须实现所有的抽象方法
inteface pt
{
pulic void ptln();
}
class A implements pt{
int a = 3;
pulic void ptln()
}
}
class B implements pt{
pulic void ptln()
}
}
pulic class MyIntefaceDemo
{
pulic static void dost(pt c)
pulic static void main(Sting[] ags)
A a1 = new A();
B 1 = new B();
其他答案(共2个回答)
中的接口是里面的的所有方法默认都是astact(抽象的),所以不能实例化,要实现一个接口,必须实现里面的所有方法.
接口的意义:
接口是用来继承已经实现的类,这样可以程序简洁,可以减少程序工作量。虽然java不支持多重继承,但可以implements多个inteface,这样可以实现多重继承的功能,又避免了多重继承的复杂性和低效性。
首先应该明确J相关信息中的接口是里面的的所有方法默认都是astact(抽象的),所以不能实例化,要实现一个接口,必须实现里面的所有方法.
接口的意义:
接口是用来继承已经实现的类,这样可以程序简洁,可以减少程序工作量。虽然java不支持多重继承,但可以implements多个inteface,这样可以实现多重继承的功能,又避免了多重继承的复杂性和低效性。
首先弄清楚接口对象.接口不能实例化,所以如果类B或者类C实现了接口A,那么就可以用A a=new B(),调用B的构造方法这样来定义接口对象,接口对象可以调用接口中被定义的被其他类实现的方法比如接口A中定义了Sting a();方法,在类B中实现方法pulic Sting ac(){etun "";}(接口中的方法默认是pulic的),那么用刚才方法定义的对象a就可以用a.ac()来调用方法.
这道题本意是想用类Alpha实现接口Beta,然后调用方法返回一个字符串,但是本题中接口并未定义任何方法,虽然用new Alpha()构造了一个接口对象,但是接口对象只能调用在接口中声明的,被其他类实现的方法.不能调用类Alpha里面定义的方法.所以在 intln(.testIt);这步会有一个无法找到方法的错误导致编译失败.本题如果改错的话可以在接口中加一句pulic Sting testIt();然后把Alpha类里的testIt()方法改成pulic就可以运行了.
首先是申明一个接口,关键字:interface,语法:
public interface MyInterface
在主体内部可以定义一些常量和...
你可以用:插入-&图片-&艺术字
将艺术字插入后(可随时对文字进行编辑)
再右击插入的文字-&设置艺术字格式-&大小-&旋转
在里面输入旋转角度就可以...
java Comparable接口是一个可比较对象的接口,compareTo是其中唯一的方法,使用者根据需要实现此接口,如果两者相等,返回0;如果参数大于当前实...
super关键字主要有以下两种用途。
1.调用父类的构造方法
子类可以调用由父类声明的构造方法。但是必须在子类的构造方法中使用super关键字来调用。其具体的语...
函数名就是定义的一个函数的名称,如定义一个函数int count(),用于计数,
而函数头是编译器中已经被定义好的一些常用函数库,常在程序的开头用#includ...
答: [4]eclipse字符集设置编辑点击导航栏里的windowPreferences[5]选择GeneralContentTypes在右侧红框里选择你要修改编码的...
答: 在1990年代末期,为了促进对等网络应用的发展,升阳(SUN)公司增加了一些类到Java技术中,让开发者能开发分散的实时聊天的applet和应用,这是在即时通信...
答: 所谓的网络编程,不论c还是java,本质上都是通过socket进行数据传输;
一般情况下可以使用的传输协议有tcp、udp、ftp等等,这些协议为网络变成提供基...
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区

我要回帖

更多关于 java对外接口开发实例 的文章

 

随机推荐