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)

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

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

  • 相关阅读:
    Windows 程序员必备的知识和工具
    由级别和性格特征将程序员分类 看看你属于哪一种
    调试九法:软硬件错误的排查之道<书评>
    逆向反汇编代码推算C++的局部变量
    逆向分析一个完整的C++程序包含寄存器与参数传递详解
    1607:Unable to install InstallShield Scripting runtime
    Form的构造函数和Load事件的区别?
    "春运男子持刀强行劫走17张卧铺票" ....
    SQL SERVER 2005中的Case When用法
    SBO中各个版本的密码
  • 原文地址:https://www.cnblogs.com/amberdata/p/5325414.html
Copyright © 2011-2022 走看看