一个接口能否继承另一个接口?一个抽象类能否实现一个接口?

都可以;

一.一个接口能否继承另一个接口?

接口继承接口  本质就是一个抽象类继承另一个抽象类(它们都没写方法的实例)。当一个类继承了一个抽象类,它必须要重写父类

抽象类中的抽象方法,如果不去重写父类抽象方法的实例,那么这个类也是抽象类(这个抽象子类,直到重写这个抽象方法的实例为止,

才能摆脱抽象的命运)。其实我们想想,一个类去实现一个接口也不就是一个实体子类把一个抽象的所以抽象方法实例化(重写了

抽象父类 中全部抽象方法),当然抽象类和接口还是有区别的。我上上篇就写到了抽象类和接口的区别,有兴趣的可以去看看。

说到这里 ,其实我们还可以再提问自己一个问题,抽象类能否继承接口呢?

答案大家也知道了,可以吗。难道只能孔明能放火,还不让我们程序员“有点想法”了。

抽象类能否继承接口,我们可以给这个接口写实例,也可以不写留给子类(这个抽象类的子类)去重写。

.一个抽象类能否实现一个接口?

   这个问题我们可以这样去思考,要想实现接口,那么我们要在这个实现类(这个抽象类)里面写接口里面方法的实例。抽象类里面能存在方法的实例吗?

大家应该都看过抽象类的概念了,抽象类里面可以存在实例。这样我们就可以解释抽象类可以实现一个接口。

当然我们也可以不在这个抽象类里面写实例,把他转嫁给这个抽象类的子类去写,这也是没有问题的。

下面我把抽象类和接口简介一下,希望能把上面一段话理解的更明白点,当然,如果有说的不对的地方希望各位大神指点一二,小弟还只是个菜鸟。

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况(但是不是不允许写)。不能创建

abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否

则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接

口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义

(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到

接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

下面给个例子,加深一下理解记忆。

public abstract class BasePhone implements Photo{
    /**
     * photo是一个接口,它有一个抽象的拍照的方法
     * 我们手机有自身的呼叫和发消息的抽象行为,我们把呼叫和发消息看做手机这个事物整体的功能
     * 我们设计抽象类的初衷是为了描述一个事物,接口是为了把事物之间各自拥有的行为放在一起 ,便于我们去调用这些行为
     * 我们可以总结:
     * 抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象
     * */
    public abstract void call();//呼叫
    public abstract void message();//发消息

    @Override
    public void photo() {
        //这段重写可以不用写,我只是测试一下会不会报错
    }
}
public interface Net {
    //接口中的变量会被隐式地指定为public static final变量
    String NET_TYPE = "4G";
    void net(String NET_TYPE);
}
public interface Photo {
    void photo();//拍照抽口
}
public class Phone1 extends BasePhone implements Net {
    @Override
    public void call() {
        System.out.println("有什么事,我们要联系呦");

    }

    @Override
    public void message() {
        System.out.println("给我发短消息,我必回");
    }

    @Override
    public void photo() {
        System.out.println("美图秀秀");
    }

    @Override
    public void net(String NET_TYPE) {
        System.out.println(NET_TYPE);

    }
}

测试类我就不写了,大家可以随便玩,如果大家想调用接口的常量,我们可以这样去写:

Net net= new Phone1();String a=Net.NET_TYPE;//调用接口中的常量net.net(a);
时间: 2024-10-14 06:08:22

一个接口能否继承另一个接口?一个抽象类能否实现一个接口?的相关文章

35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

  35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和: (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!): (4)编写测试类E,在测试类E的main方法中使用接口回调的形式来测试实现 接口的类. p

ASP.NET MVC 控制器通过继承控制器来达到 过滤 并且多了一个IAuthenticationFilter

原文:ASP.NET MVC 控制器通过继承控制器来达到 过滤 并且多了一个IAuthenticationFilter 暂时没有用到过这个IAuthenticationFilter接口,毕竟已经有三个具体实现类了,所以这个还不知道用在哪,以后看看 20190324 原文地址:https://www.cnblogs.com/lonelyxmas/p/10597461.html

Pycharm 查看一个类的继承关系图

Pycharm 查看一个类的继承关系图 在我们开发过程中: 无论是使用的开发框架自带的类, 还是我们自定义的类都特别多; 并且类之间单继承和多继承频繁使用, 这个继承,不仅仅是一级的继承关系,包括好几层的继承.父类的父类的父类. 直到最后->很难清楚一个类的实现关系, 迷失类的作用. 这里我们可以通过查看类的继承关系, 明白类的作用 查看DRF框架的APIView类的继承关系 下图就是我们查找的继承关系 查看DRF框架的GenericAPIView类所在.py模块的所有类继承关系 1.通过Ctr

如果一个类同时继承的两个类都定义了某一个函数会怎样呢

如果一个类同时继承的两个类都定义了某一个函数会怎样呢 | Code4Fun 盒子 盒子 博客 分类 标签 友链 关于 RSS 搜索 入下面所示:类C同时继承了A和B,并且两个都定义了相同的函数,如果这时候编译的话会得到错误. 1 2 3 4 5 6 7 8 9 10 testhir.cpp: In function 'int main(int, const char**)': testhir.cpp:26:7: error: request for member 'printR' is ambi

接口多继承自接口和接口是否可以继承自一般类的疑问?

接口是常量值和方法定义的集合.接口是一种特殊的抽象类. Java类是单继承的.classB Extends classA java接口可以多继承.Interface3 Extends Interface0, Interface1, interface-- 不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢? 但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口. 注意: 1)一个类如果实现了一个接口,则要实现该接口

java实现接口与继承类的区别

一个类只能继承一个类,但是可以实现多个接口. 接口里面的方法都是抽象方法,必须要重写所有的方法.接口抽象的方法都要被重写,而继承的类不必这样. 继承一般开发中用的会相比少一点,接口相比就应该会多一点.,接口主要是实现一种松耦合,便于以后的维护.升级,继承主要是提高代码的可重用性,很多东西都可以在父类中做好.子类可以直接用,用一句现在流行的话来说,继承的好处就跟拼爹是一样的. 不同的修饰符修饰(interface),(extends) 在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'

C#接口多继承方法重名问题

最近实现一个功能需要继承两个接口,然而父类接口有这重名的方法,且方法实现一致.两个父接口均被多个子接口继承,并在类实例中实现.起初,我是通过new重名方法来实现我的功能调用.后被指正,在网上看了一个工友解决类似问题的方法,这里引用记录一下. 引自:http://www.cnblogs.com/xgw2004058/archive/2010/06/18/1760046.html 经常,一个类会实现多个接口,比如用户的一个控件继承自"IEdit"和"ICombo",每个

接口、接口优点、接口的属性和方法特性、接口与继承的区别、接口与抽象类的区别、匿名实现类、JDK1.8新特性、打印类名称

接口里的属性,必须是公共的/默认的&静态的&Final&初始化后的属性: 接口里所有方法都是抽象的. 接口和继承---先天有的用继承,后天学习的用接口: 接口特性-------- 1.接口不可以被实例化: 2.实现类必须实现接口中所有方法,否则实现类必须是抽象类 3.实现类可以实现多个接口,来弥补Java不能多继承: 4.接口中的变量都是静态常量:(静态的-可以通过类的名字点-直接调用:) ----------------------------------------------

【Java面试题】13 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

1.什么是匿名内部类? 内部类,存在于另一个类内部的类,而匿名内部类,顾名思义,就是没有名字的内部类. 2.为什么需要匿名内部类? 每个inner class都能够各自继承某一实现类(implementation).因此,inner class不受限于outer class是否已继承自某一实现类. 如果少了inner class所提供的"继承自多个具象(concrete)或抽象(abstract)类"的能力,设计上和编程上的某些问题会变得十分棘手. 所以,从某个角度来看inner cl