ja语言中可以同时继承一个类并实现一个接口吗
class让我来告诉你!完全可以。
接口可以继承多个接口 接口继承多个接口的格式
接口可以继承多个接口 接口继承多个接口的格式
publicclassAdminDaoImplextendsHibernateDaoSupportimplementsAdminDao{}
这是MVC模式里的Dao的实现类实现Dao接口,继承Spring的hibernated关于接口的使用规范:aosupport
ja程序中接口间能否有继承关系?
}//B接口:接口与接口之间只能有继承关系,比如
public intece A{ .......};
public intece B{ ........}
public intece C epublicxtends A,B{ ..//接口与接口之间只能是继承,此时接口C称为复合接口!!!!!
.......}
当然可以有继承关系
不过我们不叫继承
我们叫实现接口 用的不是ex 用的implement 来实现接口的
当然可以啊,但是接口只能继承接口,而以后的实现类要复写这两个接口的方法
基于C#的接口基础教程之六
getA();继承接口实现
接口具有不变性 但这并不意味着接口不再发展 类似于类的继承性 接口也可以继承和发展
注意 接口继承和类继承不同 首先 类继承不仅是说明继承 而且也是实现继承 而接口继承只是说明继承 也就是说 派生类可以继承基类的方法实现 而派生的接口只继承了父接口的成员方法说明 而没有继承父接口的实现 其次 C#中类继承只允许单继承 但是接口继承允许多继承 一个子接口可以有多个父接口
接口可以从零或多个接口中继承 从多个接口中继承时 用 : 后跟被继承的接口名字 多个接口名之间用 分割 被继承的接口应该是可以访问得到的 比如从private 类型或internal 类型的接口中继承就是不允许的 接口不允许直接或间接地从自身继承 和类的继承相似 接口的继承也形成接口之间的层次结构
请看下面的例子
using System ;intece IControl {void Paint( ) ;}intece ITextBox: IControl {void SetText(string text) ;}intece IListBox: IControl {void SetItems(string[] s) ;}intece IComboBox: ITextBox IListBox { }
对一个接口的继承也就继承了接口的所有成员 上面的例子中接口ITextBox和IListBox都从接口IControl中继承 也就继承了接口IControl的Paint方法 接口IComboBox从接口ITextBox和IListBox中继承 因此它应该继承了接口ITextBox的SetText方法和IListBox的SetItems方法 还有IControl的Paint方法
一个类继承了所有被它的基本类提供的接口实现程序
不通过显式的public实现一个接口 一个派生类不能用任何方法改变它从它的基本类继承的接口映射 例如 在声明中
intece IControl {void Paint( );}class Control: IControl {public void Paint( ) { }}class TextBox: Control {new public void Paint( ) { }}
TextBox 中的方法Paint 隐藏了Control中的方法Paint 但是没有改变从Control Paint 到IControl Paint 的映射 而通过类实例和接口实例调用Paint将会有下面的影响
Control c = new Control( ) ;TextBox t = new TextBox( ) ;IControl ic = c ;IControl it = t ;c Paint( ) ; // 影响Control Paint( ) ;t Paint( ) ; // 影响TextBox Paint( ) ;ic Paint( ) ; // 影响Control Paint( ) ;it Paint( ) ; // 影响Control Paint( ) ;
但是 当一个接口方法被映射到一个类中的虚拟方法 派生类就不可能覆盖这个虚拟方法并且改变接口的实现函数 例如 把上面的声明重新写为
intece IControl {void Paint( ) ;}class Control: IControl {public virtual void Paint( ) { }}class TextBox: Control {public override void Paint( ) { }}
就会看到下面的结果
Control c = new Control( ) ;TextBox t = new TextBox( ) ;IControl ic = c ;IControl it = t ;c Paint( ) ; // 影响Control Paint( );t Paint( ) ; // 影响TextBox Paint( );ic Paint( ) ; // 影响Control Paint( );it Paint( ) ; // 影响TextBox Paint( );
由于显式接口成员实现程序不能被声明为虚拟的 就不可能覆盖一个显式接口成员实现程序 一个显式接口成员实现程序调用另外一个方法是有效的 而另外的那个方法可以被声明为虚拟的以便让派生类可以覆盖它 例如:
intece IControl {void Paint( ) ;}class Control: IControl {void IControl Paint( ) { PaintControl( ); }protected virtual void PaintControl( ) { }}class TextBox: Control {protected override void PaintControl( ) { }}
这里 从Control 继承的类可以通过覆盖方法PaintControl 来对IControl Paint 的实现程序进行特殊化
重新实现接口
我们已经介绍过 派生类可以对基类中已经定义的成员方法进行重载 类似的概念引入到类对接口的实现中来 叫做接口的重实现(re implementation) 继承了接口实现的类可以对接口进行重实现 这个接口要求是在类定义的基类列表中出现过的 对接口的重实现也必须严格地遵守首次实现接口的规则 派生的接口映射不会对为接口的重实现所建立的接口映射产生任何影响
下面的代码给出了接口重实现的例子
intece IControl {void Paint( ) ;class Control: IControlvoid IControl Paint( ) {…}class MyControl: Control IControlpublic void Paint( ) {}}
实际上就是 Control把IControl Paint映射到了Control IControl Paint上 但这并不影响在MyControl中的重实现 在MyControl中的重实现中 IControl Paint被映射到MyControl Paint 之上
在接口的重实现时 继承而来的公有成员定义和继承而来的显式接口成员的定义参与到接口映射的过程
using System ;intece IMods {void F( ) ;void G( ) ;void H( ) ;void I( ) ;}class Base: IMods {void IMods F( ) { }void IMods G( ) { }public void H( ) { }public void I( ) { }}class Derived: Base IMods {public void F( ) { }void IMods H( ) { }}
using System ;intece IBase {void F( ) ;}intece IDerived: IBase {void G( ) ;}class C: IDerived {void IBase F( ) {//对F 进行实现的代码…}void IDerived G( ) {//对G 进行实现的代码…}}class D: C IDerived {public void F( ) {//对F 进行实现的代码…}public void G( ) {//对G 进行实现的代码…}}
lishixinzhi/Article/program/net/201311/15680
的接口是什么样的逻辑,一直学不明白
}}(1) 接口是对继承单根性的扩展:请你回想一个我们在第6章继承中的问题,在C#中,一个子类可以继承多个父类吗?根据我们学习的知识,这是不可以的。但是接口可以说是从某种程度上实现了多重继承的功能。在C#中,一个类虽然不能实现多熏继承,但是一个类可以实现多个接口。通过实现多个接口可以说是变相地实现了类的多重继承。
不行,只能单继承,但是可以多实现(2) 接口是一种规范和标准:一个类如果实现了一个接口,意味着这个类遵循了某种规范和约定。其他类可以通过这些规范和约定与它通信。
(4) 接口的使用方便团队协作开发:例如一个系统,加入要实现对象的排序功能,实现接口的人专门实现接口,而做排序功能的人专门做排序,如果一个系统都能够做到这种设计,便可以更为方便地使开发团队进行分工明确的协作开发。
JAVA 接口是什么?
B{1:是用关键字intece定义的。
注意:接口中的成员都有固定的修饰符。
成员变量:public static final
成员方法:public abstract
intece Inter{
public static final int x = 3;
public abstract void show();
}3:接口中有抽象方法,说明接口不可以实例化。接口的子类必须实现了接口中所有的抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。
4:类与类之间存在着继承关系,类与接口中间存在的是实现关系。
继承用extends ;实现用implements ;
5:接口和类不一样的地方,就是,接口可以被多实现,这就是多继承改良后的结果。ja将多继承机制通过多现实来体现。
6:一个类在继承另一个类的同时,还可以实现多个接口。所以接口的出现避免了单继承的局限性。还可以将类进行功能的扩展。
7:其实ja中是有多继承的。接口与接口之间存在着继承关系,接口可以多继承接口。
ja类是单继承的。classB Extends classA
ja接口可以多继承。Intece3 Extends Intece0, Intece1, intece……
不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
抽象类与接口:
抽象类:一般用于描述一个体系单元,将一组共性内容进行抽取,特点:可以在类中定义抽象内容让子类实现,可以定义非抽象内容让子类直接使用。它里面定义的都是一些体系中的基本内容。
接口:一般用于定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能。
抽象类和接口的共性:都是不断向上抽取的结果。
抽象类和接口的区别:
1:抽象类只能被继承,而A{且只能单继承。
接口需要被实现,而且可以多实现。
2:抽象类中可以定义非抽象方法,子类可以直接继承使用。
接口中都是抽象方法,需要子类去实现。
3:抽象类使用的是 is a 关系。
接口使用的 like a 关系。
4:抽象类的成员修饰符可以自定义。
接口中的成员修饰符是固定的。全都是public的。
ja 可不可以继承多个类
实现多个接口时,接口中的方法不能有重名。说明 KeyListener, ActionListener, MouseListener, MouseMotionListener 都是接口
“接口可以继承多个接口”,
intece IGameHandler 是接口,不是类。
接口和类的区别:
一、接口只是一个协议,继承接口了就必须实现接口内的所有方法。接口比抽象类更抽象。
二、类包含方法,是对一个过程具体实现。
三、接口可以继承多个接口,但是接口不同,接口只是方法的声明,并没有方法的具体实现。例如接口A和B,即使都有个方法叫test,它们并没有规定这个test的具体如何实现。所以设有个C接口同时继承A、B接口,并不会存在C中的test方法来自A还是来自B的冲突问题(因为A、B中的test方法没有具体实现,随便来自哪个都是可以的)。所以接口是可以多重继承的。类可以实现多个接口,类不可以继承多个类。
ja 一个类不能同时继承多个类,一个类只能继承一个类(class),但是可以实现多个接口(intece);一个接口(intece)能够继承多个接口(intece)
在ja里,一个类可不可以同时继承父类,实现接口
2:接口中包含的成员,最常见的有全局常量、抽象方法。可以,ja只能单继承,能实现多个接口。继承和接int口能同时使用。
ja中,一个接口可以由多个类实现吗
{AndroidCar{Carintece
intece aa,b,c;void
set(Car1
a,Car2
b,Car3
c,){this.a=(Carintece)a;
//做类型转换,说是强转也可以this.b=(Carintece)b;this.c=(Carintece)c;}void
getPr(){System.out.println(a.getPr());
//输出Car1类的实现System.out.println(b.getPr());
//输出Car2类的实现System.out.println(c.getPr());
//输出Car3类的实现}}//因为a,b,c是Carintece类型的。但是传入的是Car1,Car2,Car3类型的,会被自动转换为Carintece类型通过接口函数调用的时候,虽然都是Carintece类型但是会自动调用到Car1,Car2,Car3类型的个子的
getPr实现方法。
一个类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
ja接口可以继承类吗?怎么回事说一下谢谢~~概念有点模糊~
WeixinPay我觉得应该这样说:没有接口继承类这一说法!类是一个大的概念,而接口是一种特殊的类,只含有常量变量和抽象方法,只能通过类来实现这个接口!
不可以,接口是接口,可以继承很多;类是类,只能继承一个。
常量不可以的
接口只能继承于接口,不能继承于类
接口只能继承于接口,不能继承于类
php类Class详解
3、提高维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类,可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦,如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。php类Class详解
class 类定义成员变量方法有三种: 1、私有变量或方法定义关键字 private 变量名 private 方法(){} 2、公有变量或方法定义关键字 public 变量名 public 方法(){} {void3、受保护的变量或方法定义关键字 protected 变量 protected 方法(){}
面向对象方式类细节:
如果一个类中含有抽象方法,必须将抽象方法的所在的类声明成抽象类 如果一个类继承某个抽象类,则它自己必须声明一个抽象类,或者实现一个从A类继承的抽象方法 接口 1、接口的使用基本语法 intece 接口名{ //属性 //方法 } 接口的方法都不能有方法体 2、如何去实现接口基本语法,一个类可以使用N多个接口 class 类名 implements 接口名1,接口名2{ } 接口的作用就是,声明一些方法,让 其他类来实现,接口还体现编程中我们希望的效果,高内聚低偶合 1、接口可以继承多个接口 2、当一个类继承了某些接口,就必须全部实现这些接口里面的方法 3、接口方法权限必须为public 默认为public权限 Final方法 1、Final方法定义的类方法不能被其他子类改写 2、Final关键字不能去修饰类属性 什么使用用final 1、因为安全考虑,类的某个方法不允许修改 2、不希望某个类被其他的类继承