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.接口是给类去实现的,非抽象类实现接口时,必须将接口中方法都实现。

  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/z-jun/p/6100262.html
Copyright © 2011-2022 走看看