day09-抽象类-接口

一、抽象类

1、概念:

     当描述一个类的时候,该类不需要具体的方法行为描述,我只需要知道该类有这个方法就可以了,不需要知道怎么具体实现时候,就可以将该方法定义成抽象方法,用abstract修饰该方法,具有抽象方法的类一定要声明成抽象类,也要用abstract修饰。

2.特点:

  1) 不具体,看不明白,很抽象,但是知道一些大概的方法(知道是干什么的,但是不知道怎么干)。

  2)抽象类中的抽象方法只需要定义,不需要实现(不需要方法体)。

  3)抽象类不可以直接被实例化对象,也就是说不能直接像常规那样new一个对象。注意是直接。( 其实这是一个仁者见仁智者见智的问题,有些说内部类的实现算一个实例,有些说不算,所以 就看是不是直接创建实例了。)

  4)子类继承抽象的父类后,只有全部实现了父类的抽象方法后,该子类才可以跟正常类一样的创建实例对象,否则该子类还是一个抽象类,还要用abstract修饰。

  5)抽象类中可以有普通方法,因为抽象类跟普通的类没什么太大的区别,只是抽象类在描述某些事物的时候,有些方法或功能显的不具体,就将该方法定义抽象方法;同时也可以有构造函数(用于给子类初始化,子类的构造器中不断的向上调用 super( ),可以带参数)不影响。

二、接口

1、概念:接口是一系列抽象方法的集合,里面定义了很多抽象方法。用interface关键字修饰。

2、接口中的成员:抽象方法、全局变量

3、抽象方法是用public abatract 修饰的,不写默认有

4、接口中有抽象方法,说明接口不能被实例化对象,接口的实现类(相当于子类)必须全部实现接口中的抽象方法时候才可以创建实现类对象,否则该实现类还是一个抽象类。

5、接口与接口之间是继承关系用extends,类与接口之间是实现关系用implements,该类叫接口的实现类。

6、接口之间支持多继承,类与接口之间可以多实现。(一个类可以实现多个接口,java改良了多继承问题)。

7、一个类在继承父类后,还可以实现多个接口,这就易于扩展类的功能了。

 

三、抽象类与接口共性与区别

1、共性:   

    都定义了很多的抽象方法,子类(实现类)都是必须完全实现抽象方法后,才可以被实例化对象。 

2、区别:

   抽象类:一般定义的是一整个体系,从最顶层的抽象类开始,一直往下具体到每个子类。这是将下面的子类的共性内容不断的向上抽取的结果,就形成了抽象类。

  接口:一般定义的是一组扩展的功能,是子类在继承父类后还需要一些额外的功能,为了程序的扩展性,不要轻易的去修改代码,这时候就可以定义接口来满足这需求。

  具体区别:

   (1)抽象类是类的一种,那么只支持单继承

    (2)接口可以多继承,需要被实现,不被实现的接口就毫无用武之地

 

     

    

posted on 2018-07-24 22:00  志爱007  阅读(99)  评论(0编辑  收藏  举报