一个类实行了接口,也可以成为这个接口的子类的?

问题描述

一个类Super中 有实例变量的接口InterfaceA,InterfaceB 然后子类Son继承了这个类 相应的实例变量是实行了父类的接口 A,B ,这样也可以的?小弟写了下列这些类和接口:package designPatterns;两个接口InterfaceA, InterfaceB:public interface InterfaceA {      void methodA();}public interface InterfaceB { void methodB();}两个类A,B分别实现此两个接口:public class A implements InterfaceA { public void methodA() {System.out.println("A implements InterfaceA");}}public class B implements InterfaceB { public void methodB() {System.out.println("B implements InterfaceB");}}父类Super中,两个接口作为实例变量public class Super {public InterfaceA a;public InterfaceB b;public void useMethodA() {a.methodA();}public void useMethodB(){b.methodB();}}子类Son继承父类,(问题来乐!这时候public InterfaceA a = new A();可以成立的?new一个A的对象 然后直接可以赋给类型为InterfaceA的对象?)public class Son extends Super { public InterfaceA a = new A(); public InterfaceB b = new B();}写一个TestDrive, 编译成功,并正常调用了实现了接口的方法!public class TestDrive {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub Son s = new Son(); s.a.methodA(); s.b.methodB();}}控制台输出:A implements InterfaceAB implements InterfaceB也就是说!方法被成功调用了!我的问题主要在子类的这里: public InterfaceA a = new A(); public InterfaceB b = new B();两个接口和A,B并没有继承关系,为什么可以这样定义的?

解决方案

虽然没有继承关系,但是有实现关系啊,实现了接口,这样也可以的,继承和接口是有相似性的。这叫做父类(父接口)则引用指向了子类(实现类)的对象。这个也就是面对对象编程的特性之一。不懂的可以问我咯。
解决方案二:
引用实现接口,同样是继承关系。说继承也不是很准确,这么说吧,Interface的意思是说:所有实现这个接口的类都应该长成这个接口的样子,implements一个接口,或是extends一个类,描述的都是is-a的关系,class A implements InterfaceA 也就代表了A是一个InterfaceA。
解决方案三:
而且,接口比父子类继承更为抽象,可以说是高度抽象的继承实现。
解决方案四:
实现接口,同样是继承关系。

时间: 2024-10-29 16:01:03

一个类实行了接口,也可以成为这个接口的子类的?的相关文章

一个类如何实现两个接口中同名同参数不同返回值的函数

假设有如下两个接口: public interface IA{    string GetA(string a);}public interface IB{    int GetA(string a);} 他们都要求实现方法GetA,而且传入的参数都是一样的String类型,只是返回值一个是String一个是Int,现在我们要声明一个类X,这个类要同时实现这两个接口: public class X:IA,IB 由于接口中要求的方法的方法名和参数是一样的,所以不可能通过重载的方式来解决,那么我们该

java 接口 接口实现-Java中一个类如何实现多个接口中同名同参返回值不同的方法?

问题描述 Java中一个类如何实现多个接口中同名同参返回值不同的方法? 如:` class A implements Interface1,Interface2{ //这里该怎么写呢? } interface Interface1{ public void method(); } interface Interface2{ public int method(); } 解决方案 class A implements Interface1,Interface2{ //直接写啊 public voi

一个类实现一个接口时,在方法的头上默认带了一个@Override是什么意思?

问题描述 一个类实现一个接口时,在方法的头上默认带了一个@Override是什么意思?加上它和去了它有什么区别吗? 解决方案 @Override是覆盖的意思,这是jdk自带的一个注解.表示该方法是继续过来或者实现的方法,如果加了该注解,它的父类或者实现的接口中没有该方法,则ide会报错.不加也可以,但是加了增强了可读性,并且是一种强制性的覆盖.这种机制其实是将运行期的错误放到编译期进行处理了.解决方案二:JDK1.5:当继承一个类,并对其中的方法重写的时,需要加这个注释.实现接口的时候不能加,加

C#中说接口是让一个类有两个或两个以上基础类的唯一方法,这句话怎么解释,谢谢!

问题描述 C#中说接口是让一个类有两个或两个以上基础类的唯一方法,这句话怎么解释,谢谢!帮忙举个例子,谢谢! 解决方案 解决方案二:publicinterfaceI1{voidGetX();}publicinterfaceI2{voidGetY();}publicclassclass1:I1,I2{publicvoidGetX(){}publicvoidGetY(){}}解决方案三:我明白楼上说的意思但这种情况,并没有实现一个类有两个或两个以上基础类的情况呀?帮忙指教,谢谢解决方案四:I1,I2

如果一个类实现了上百个至上千个接口,结果会怎样?

问题描述 如果一个类实现了上百个至上千个接口,结果会怎样? 问题补充:我补充下,这个类是个抽象类,目的是为了ejb远程调用时可以认到对应的方法,不至于抛出java.lang.RuntimeException: Could not resolve beanClass method from proxy call这样的异常.或者是否有人知道ejb执行到哪个阶段抛出的这个异常,是否可以拦截. 解决方案 代码会很多...至少在我们公司不会出现,公司甚至规定了一个类的代码最好不要超过多少行,一个方法的代码

怎样让一个类的接口只能由另外一个特定的类使用啊?除了继承,有没有其他方法

问题描述 怎样让一个类的接口只能由另外一个特定的类使用啊?除了继承,有没有其他方法? 解决方案 解决方案二:类的接口?解决方案三:你说的是方法吧?这个方法增加个参数,这个参数就是你说的特定类.这样就可以了.别的就没法用了.解决方案四:类的函数吧,继承接口的

vb.net中给一个类添加方法

类的方法就是在类中用户声明的那些公有的(public)Sub或者Function过程. 例如:下面代码就是在一个Account中加入一个Withdrawal方法,用户可以把这个公有的函数过程加入到类模块中去: Public Function WithDrawal(Byval Amount As Currency,_ Byval TransactionCode As Byte) As Double '(Code to perform the withdrawal and return the 'n

android中的service本质是一个类还是一个方法还是一个对象

问题描述 android中的service本质是一个类还是一个方法还是一个对象 android中的service本质是一个类还是一个方法还是一个对象 当然我明白java中一切都是对象的这种说法 解决方案 service在哪里看到的,作为类的定义它是类,对它实例化创建了对象并且执行就是对象了. 解决方案二: java中一切都是对象 这个说法其实不准确.你能说java中的关键字是对象么? 解决方案三: Service(服务)是Android 核心组件之一,特点就是Android系统帮你实例化他的对象

从零开始学_JavaScript_系列(17)——dojo(6)(声明一个类declare)

(71)声明一个类declare 作用: 封装一个类,然后可以通过调用这个类,来调用其类方法.   优点: ①可以继承其他类的类方法:   ②假如我们需要使用一个类的类方法,而这个类依赖于5个插件.如果正常调用的话,我们需要在每个使用这个类的js文件里,调用这5个插件.当我们使用封装时,我们只需要调用这个类即可.而调用这个类的方法很简单.   ③可以使得代码模块化,按需加载.例如,我有封装好的A类B类C类,起初我用的是A类(假设A类依赖于20个插件),然后我可能弃用A类改用B类(B类使用与A类不