zoukankan      html  css  js  c++  java
  • 抽象类和接口

    抽象类:

    关键字abstract:   一个类如果被abstract修饰那么这个就叫抽象类

                      

             1.abstract修饰的方法,称为抽象的方法

           2.abstract修饰的类,称为抽象类

           3.一个类继承了抽象类,必须要实现抽象类中的抽象方法

             abstract 关键字使用:

                                1.一个方法没有方法体,这个方法必须要用abstract来修饰

                                2.一个类中有抽象方法,这个类必须用abstract来修饰,为抽象的类

                                3.一个非抽象的类,继承了这个抽象类,那么这个非抽象类中必须重写所有的抽象方法

                                4.抽象类中可以有非抽象的方法

                                5.抽象类中可以有构造方法,作用是让子类能够初始化父类中的变量

                                6.抽象类不能创建对象

    原因:如果创建对象,对象就可以调用抽象方法,这样调用抽象方法(没有具体的实现)没有意义

                                7.抽象类中可以没有抽象方法

            

    abstract的使用场景:

    事物存在某种行为,但又不具体,那么可以抽取这种行为,声明一个没有实现的行为,

    这种行为称为抽象的行为,这个时候就需要用到抽象类。

    abstract class Animal  // abstract修饰的类,为抽象类

    {

    abstract public void run(); // 抽象方法时没有主体,没有方法的具体实现

    }

    非抽象类继承了抽象类,必须实现抽象类的所有方法

            

    abstract不能和那些关键字连用:

                  1.不能和private (抽象必须要重写,但是私有的不能重写)

                  2.不能和static使用(static修饰的方法不能被重写,而abstract修饰方法本身没方法体的必须重写)

                  3.不能final一起使用 (final是修饰的方法不能被重写,抽象的是需要重新写的)

    接口:用来添加扩展功能

    Eg..带橡皮擦的铅笔,拥有橡皮擦的功能,又拥有写字的功能,java中又不能出现既集成铅笔又继承橡皮擦,所以引出了借口(解决单继承问题)

    interface关键字

           接口定义模式:

                  用interface关键字来表示接口

                  结构:interface 接口名{};

    Implements关键字

           实现接口中的方法,需要用实现(implements)来完成

           结构:class 类 implements 接口名1,接口名2...

                         {

                         }

    java 中支持多实现,即一个类可以实现多个接口,类如果实现了一个接口,需要将接口中的方法都实现

           作用:  1.用来拓展功能

                     2.让程序解耦

                     3.定义约束

          

           接口使用注意事项:

                  1.接口是一个特殊的类,可以定义属性和方法

                  2.属性默认final修饰,  public static final实际上是一个常量

                  3.方法都是抽象的       abstract public

                  4.接口不能创建对象

                  5.接口没有构造方法

                  6.接口是给类去实现的,非抽象类实现接口时,必须将接口中方法都实现。

  • 相关阅读:
    POJ-2478 Farey Sequence(欧拉函数)
    BZOJ-1103: [POI2007]大都市meg(树状数组)
    NOIP2016模拟 星际争霸(二分)
    HDU-1222 Wolf and Rabbit (欧几里得定理)
    POJ-2689 Prime Distance(线性筛法)
    FZU-2134 上车(树状数组)
    FZU-2236 第十四个目标(树状数组)
    2016年11月12日00:14:27
    FZU-1921 栀子花开(线段树)
    BZOJ3132 上帝造题的七分钟
  • 原文地址:https://www.cnblogs.com/z-jun/p/6100262.html
Copyright © 2011-2022 走看看