Ⅰ java中可否多个类实现一个接口
abstract
class和interface是Java语言中对于抽象类定义进行支持的两种机制。它们之间区别:
接口是公开的,里面不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的;
代码演示:
接口A
public
interface
A
{
public
abstract
void
play()
;
public
abstract
void
beFriendly();
}
接口B
public
interface
B
{
public
abstract
void
play()
;
public
abstract
void
beFriendly();
}
一个类实现多个接口@Service("weixinPay")
public
class
WeixinPay
implements
Pay{
@Overrid
public
Object
pay(Map<String,
Object>
map){
return
"weixinpay";
}
}
接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量;
实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现;
接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现;
接口可以实现多重继承,而一个类只能继承一个超类;
(1)java实现接口扩展阅读:
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。
功能
在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
Ⅱ java中如何实现接口以及接口中需要注意的
首先用interface声明一个接口,注意接口不是类,我们习惯上可以认为他是一个抽象的类,因为它不能实现方法体,只有方法的定义。然后我们可以写一个类去实现这个接口例如:public class Text implements IUSBable 这样就说明你的这个类中还实现你接口中说定义的方法,不然会报错的! 我的概念就是接口类似于生活中的水龙头,只要你这个人有实现这个接口(水龙头)的方法,那么你就可以用这个水龙头,这个比喻虽然不是那么这样从另一方面说明了接口拥有的可扩展性,假如以后程序升级我只要将接口中的方法增加或修改一下! 这种概念性的东西是要自己多体会的,最好联系生活中的实例来理解,这样会事半工倍!
Ⅲ java 接口怎么用应该怎么实现
java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承
用法public class test implements 接口名称
当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象的
比较抽象类与接口
1, 抽象类与接口都位于继承树的上层
相同点
1, 代表系统的抽象层,当一个系统使用一颗继承树上的类时,应该尽量把引用变量声明为继承树的上层抽象类型,这样可以提高两个系统之间的送耦合
2, 都不能被实例化
3, 都包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不提供具体的实现
不同点:
1, 在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,这是抽象类的优势,但这一优势限制了多继承,而接口中只能包含抽象方法.由于在抽象类中允许加入具体方法,因此扩展抽象类的功能,即向抽象类中添加具体方法,不会对它的子类造成影响,而对于接口,一旦接口被公布,就必须非常稳定,因为随意在接口中添加抽象方法,会影响到所有的实现类,这些实现类要么实现新增的抽象方法,要么声明为抽象类
2, 一个类只能继承一个直接的父类,这个父类可能是抽象类,但一个类可以实现多个接口,这是接口的优势,但这一优势是以不允许为任何方法提供实现作为代价的三, 为什么Java语言不允许多重继承呢?当子类覆盖父类的实例方法或隐藏父类的成员变量及静态方法时,Java虚拟机采用不同的绑定规则,假如还允许一个类有多个直接的父类,那么会使绑定规则更加复杂,
因此,为了简化系统结构设计和动态绑定机制,Java语言禁止多重继承.而接口中只有抽象方法,没有实例变量和静态方法,只有接口的实现类才会实现接口的抽象方法(接口中的抽象方法是通过类来实现的),因此,一个类即使有多个接口,也不会增加Java虚拟机进行动态绑定的复杂度.因为Java虚拟机永远不会把方法与接口绑定,而只会把方法与它的实现类绑定.四, 使用接口和抽象类的总体原则:
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怎么样实现接口
我给你实现了一个如下:package greatwqs.myinterface;public interface MyInterface {
/**
* 展示方法
*
*/
public void showFun();
/**
* 得到数据
* @return
*/
public String getData();
/**
* 得到此函数的方法名
* @return
*/
public String getFunName();}
----------------------------------------实现如下:package greatwqs.impl;import greatwqs.myinterface.MyInterface;public class InterfaceImpl implements MyInterface { /**
*
* 得到数据
* @return
*/ public String getData() {
return "greatwqs";
} /**
* 得到此函数的方法名
*/
public String getFunName() {
return "getFunName";
} /**
* 展示方法
*
*/
public void showFun() {
System.out.println("这个类是" + this.getClass());
}}
Ⅳ java简单接口的实现
1:你应该定义一个抽象类,比如抽象类A,并定义一个抽象方法b()。
2:你的画点类B应该实现接口A,画线类C也要实现接口A。然后分别实现抽象方法b().B里面的方法b(),实现画点的程序,C里面的方法b(),实现画线的程序。
3:这样你的draw就可以写成draw(A a),而不用管传入的a对象是B类型还是C类型。
4:当传入得对象a是B的实例,那么调用draw的结果就是画点的,当a是C的实例,调用draw后,就是画线的。
Ⅵ java里实现一个接口的类必须要实现接口里的所有方法吗
一、实现接口或继承抽象类的非抽象子类必须实现接口的所有方法或抽象类的所有抽象方法。
接口中的所有方法均为抽象方法,抽象类中包含非抽象方法和抽象方法。如果一个非抽象子类实现了接口,那么该子类必须实现父接口的所有方法。如果一个非抽象子类继承了抽象类,那么该子类必须实现抽象类的所有抽象方法。
二、实现方案
(一)实现接口
1. 定义接口
/**
*接口:表示人类行为
*/
interfaceBehavor{
/**
*抽象方法:“吃饭”方法
*/
voideat();
/**
*抽象方法:“睡觉”方法
*/
voidsleep();
}
2. 定义子类,实现接口
/**
*子类:表示人类,实现“行为”接口
*/
classPersonimplementsBehavor{
/**
*姓名
*/
protectedStringname=null;
publicPerson(Stringname){
this.name=name;
}
//实现接口的抽象方法
@Override
publicvoideat(){
System.out.println(name+"正在吃饭......");
}
//实现接口的抽象方法
@Override
publicvoidsleep(){
System.out.println(name+"正在睡觉......");
}
}
3. 定义调用类,调用方法
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newPerson("张三其");
p.eat();
p.sleep();
}
}
(二)继承抽象类
1. 定义抽象类
/**
*抽象类:表示人类
*/
abstractclassPerson{
/**
*姓名
*/
protectedStringname=null;
publicPerson(Stringname){
this.name=name;
}
/**
*抽象方法:吃饭
*/
publicabstractvoideat();
/**
*抽象方法:睡觉
*/
publicabstractvoidsleep();
}
2. 定义子类,继承抽象类
/**
*子类:学生类
*/
classStudentextendsPerson{
publicStudent(Stringname){
super(name);
}
//实现抽象类的抽象方法
@Override
publicvoideat(){
System.out.println("学生"+name+"正在吃饭......");
}
//实现抽象类的抽象方法
@Override
publicvoidsleep(){
System.out.println("学生"+name+"正在吃饭......");
}
}
3. 定义调用类,调用方法
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newStudent("张三其");
p.eat();
p.sleep();
}
}
Ⅶ Java接口的定义与实现
方法的实现是指可以在{}中写具体的Java代码,接口只能是以()结尾,
public void tree();//方法的定义
//方法的具体实现
public void tree(){
system.out.println("这是一颗松树");
}
Ⅷ java 类实现接口方法
java
接口不能实例化,没有实现类的方法,没有构造方法,所有的成员属性都是常量,方法都是抽象方法。
Ⅸ java中接口的实现
你的接口中只是生明了一个模型,由它的子类去实现它的方法
你的Foo 中有个 bar的方法
这个方法,有可能有三个子类,返回的值都不一样呢?
你看你上面的代码,Sprite 中的bar return 0
假设现在有个类叫Sprite2 同样也是实现了Foo 并在bar方法中return 100
那么你的程序
Foo a =new Sprite();
a.bar(); //得到是0
Foo a =new Sprite2();
a.bar(); //得到是100
这是java的多态性,新手比较难理解
Ⅹ java 什么是接口,如何实现接口
JAVA中被interface修饰的为接口
如public interface onClickListener{
void onClick(int KeyCode);
}
实现接口需要用implements关键字来实现,同时需要复写接口中实现的方法就行
public class Key implements onClickListener{
public void onClick(int KeyCode){
// TODO 这里是实现的代码
}
}