zoukankan      html  css  js  c++  java
  • Java Interface and Abstraction

    本文引用资源申明:

    http://blog.csdn.net/xw13106209/article/details/6923556

    http://www.cnblogs.com/dolphin0520/p/3811437.html

    http://www.tutorialspoint.com/java/java_abstraction.htm

    1. 抽象类

    关键词:abstract

    定义:含有抽象方法的类,也可以有具体方法。

    抽象方法:只有方法的声明,没有body。 用;结尾,没有{}。抽象类的抽象方法就是强制子类必须去实现的。

    抽象类是为了继承而存在的。如果一个父类,它的某个方法在父类中实现出来没有任何意义,必须根据子类的需求具体进行不同的实现,那么可以将这个方法声明为abstract方法,父类标为abstract类。

    不要去写一个具体类去继承另外一个具体类,这个设计会有很大问题。

    抽象类和普通类的区别:

    a:抽象方法必须为public或者protected

    b: 抽象类不能用来创建对象(因为有抽象方法,不能实现)

    c:如果一个类继承与一个抽象类,子类必须实现父类的抽象方法。如果子类不能实现,那么子类也要是abstract。

    2. 接口

    定一个接口: public interface Name{}

    接口中只能定义方法,不能有方法的实现。也就是说,接口中的方法都是抽象方法,而且是public abstract方法。接口中的变量都是public static final变量。

    3. 区别

    (1)总体来讲:

    可以认为接口是抽象类的一种,只是多了许多限定条件。

    a:接口中不能有静态代码块以及静态方法,抽象类可以有。

    b:接口中不能提供方法的实现细节(body),抽象类的具体方法可以提供body。

    c: 接口中的成员变量只能是public stratic final的

    但是也有很大的好处,因为

    一个类只能继承一个抽象类,但是可以引用(implement)多个接口,用,(逗号)连接

    (2)

    抽象类是对整个类包括属性、行为进行抽象,但是接口是对类的行为进行抽象。

    如果一个类继承了某个抽象类,那么子类一定属于抽象类的种类(比如民用飞机属于飞机,燕子属于鸟)。但是接口是具备这个行为与否的关系,比如飞机和鸟都可以引用 “飞”这个接口来实现“飞”这个行为。所以,继承(extend)是“是不是”的关系,接口是“有没有”的关系。

    举个例子,我们可以把飞机、鸟作为抽象类,“飞”作为接口,让整个两个抽象类实现“飞”这个接口,那他们就有了“飞”这个行为。让民用飞机继承飞机这个抽象类,那个民用飞机就可以飞并且含有飞机的基本属于,同理,燕子也是一样。

    (3)

    对于抽象类,如果需要添加新的方法,可以直接在抽象类的更改。但是对于接口,如果接口更改,则所有实现这个接口的类都必须做相应的改动。因为如果向接口添加了一个新的方法,那么所有实现这个方法的类都不能通过编译,必须让每一个类都实现这个方法才行。

    如何在子类中实现抽象类的抽象方法?如果在引用接口的类中实现接口的方法??需要添加例子

  • 相关阅读:
    宋宝华:slab在内核内存管理和用户态Memcached的双重存在
    能感知功耗的Linux调度器(EAS)
    内存检测王者之剑—valgrind
    随心所动,厂商的CPU核管理策略介绍
    一文读懂 进程怎么绑定 CPU
    Fastbootd实现原理分析
    cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
    WIFI的WPS和pin码(测试失败)
    视频下载(钉钉、B站等) 解决方案
    DevExpress 报表设计文件(.vsrepx)不显示或显示空白
  • 原文地址:https://www.cnblogs.com/amberdata/p/5325414.html
Copyright © 2011-2022 走看看