zoukankan      html  css  js  c++  java
  • 第5章 抽象类与接口

    抽象类:只有方法名,而没有方法体的类,就称之为抽象类.

    作用:当父类只是知道子类应该干什么,但是不知道子类该如何去实现这些方法,这种时候就应该使用抽象类和抽象方法,在子类中再去具体实现抽象方法.

    语法:

    abstract class 类名{
    //抽象类需要用abstract修饰符来修饰
    public abstract 返回值类型 方法名(参数);
    //抽象方法也需要用到abstract方法来修饰
    
    }//要使用抽象类的时候直接extends继承即可

    特点:1、抽象类和抽象方法都需要被abstract修饰,并且抽象方法一定要定义在抽象类中.

      2、抽象类不能直接创建对象,因为调用抽象方法没有意义

      3、只有覆盖重写了抽象类中的所有抽象方法后,其子类才可以创建对象,否则该子类还是一个抽象类

      4、抽象类中可以不定义抽象方法(所以包含抽象方法的类一定是抽象类,抽象类也可以定义非抽象方法)

    接口

    接口是比抽象类更抽象的"类".接口只描述所应该具备的方法,并没有具体实现.

    具体的实现由抽象类的实现类(子类)来实现.

    优点:将功能的定义与实现分离,优化了程序设计.

    语法:

    public interface 接口名
    {
        修饰符 返回值 抽象方法1();
       修饰符 返回值 抽象方法2();
       修饰符 返回值  抽象方法3();
    }
    class 实现类名 implements 接口名
    {
        抽象方法1实现(){};
        抽象方法2实现(){};
        抽象方法3实现(){};
    }

      实现类的抽象方法的修饰符和返回类型、参数必须和接口定义的一样.

     注意:接口的所有方法默认为public abstract(接口中的方法也能使用static修饰,但需要增加方法体实现,并且不能为abstract方法了)

    继承父类同时实现接口:

    一个子类可以同时继承一个父类和实现一个接口

    当一个子类继承了一个父类,同时他又需要其他的

    功能的时候,接口就派上用场了.

    语法:

    class Dog extends 子类 implements 接口
    {
        //接口实现
    }

    接口的多继承:

    类之间可以通过继承来产生关系,但只支持多层继承,而不支持多继承.而接口和类使用implements(实现)来产生关系

    同样,接口之间也可以使用extends进行继承,而且一个接口还能同时继承多个接口

    语法:

    interface 接口名 extends 接口名1,接口名2,接口名3{
    //子接口不需要去实现父类接口的方法
    }//父接口之间用逗号隔开

    课后习题

    1、接口和抽象类的异同是什么?

      1、接口中只有抽象方法,而抽象类中不一定有或只有抽象方法,还能有普通方法和成员变量.

      2、抽象类和接口都不能用来实例化对象.

      3、接口可以多继承,而抽象类不行

      4、一个类可以实现多个接口,但只能继承一个抽象类

      5、抽象类可以有构造函数,而接口不能.

      6、抽象类使用abstract修饰,接口使用interface修饰

    2、接口和父类的异同是什么?

      1、接口中只能有抽象方法(只有方法描述而没方法实现),而父类中不能拥有抽象方法,可以拥有普通方法(需要有实现)和成员变量.

      2、接口不能实例化对象,而父类可以.

      3、一个子类可以实现多个接口,但只能继承一个父类.

      4、接口使用implements关键字实现,父类使用extends来继承

  • 相关阅读:
    第八场 hdu 6136 Death Podracing(dfs+思维)
    第九场 hdu 6162 Ch’s gift(树链剖分+线段树)
    树链剖分 模板
    CodeForces
    第十场 hdu 6172 Array Challenge(矩阵快速幂)
    第十场 hdu 6171 Admiral(双向bfs找交点)
    CodeForces
    第十场 hdu 6178 (bfs)
    第十场 hdu 6180 Schedule (multiset)/(思维)
    第八场 hdu 6143 Killer Names(思维题)
  • 原文地址:https://www.cnblogs.com/youjunhui/p/14880578.html
Copyright © 2011-2022 走看看