黑马程序员———java基础——抽象类、接口

-----------android培训java培训、java学习型技术博客、期待与您交流!------------


一、抽象类

1什么是抽象类

   从以下几点理解:

   a使用abstract关键字修饰的类就是抽象类,抽象类不能new对象,原因在于抽象类含有抽象方法,不能被调用。

   b没有方法体的方法为抽象方法,使用abstract关键字修饰。

   c有抽象方法的类必须声明为抽象类。

   d抽象类不一定含有抽象方法。 学习GUI的时候会学习一些抽象类没有抽象方法。XxxAdapter


2、为什么要定义抽象类

   理由如下:

    a如果有多个类具有相同的方法声明,而方法的实现不一样,这时就可以抽象出父类,将方法在父类中声明

    b别人在学习我们的软件时,只需要学习父类就知道子类有什么方法

    c在设计软件时,要尽力抽象父类,继承关系以3~4层为宜

 

二、接口(Interface)

1什么是接口

a接口是一种特殊的抽象类,接口中声明的所有方法都是抽象的

b使用interface关键字修饰一个接口


2接口优点

  一个类可以实现多个接口,更好的支持多态


3接口的用法

  a我们可以定义一个类来实现接口,使用implements关键字

  b实现一个接口需要实现接口中所有的方法,抽象类除外

  c通常使用匿名内部类来实现一个接口

  d接口可以继承接口,使用extends关键字。 接口不能继承抽象类,因为抽象类中可能有不抽象的方法。

 

4接口中的方法和变量

  a接口中定义的方法默认是公有的抽象的,被public abstract修饰

  b接口中定义的变量默认为全局常量,使用public static final修饰


5abstract classinterface的区别

    a抽象类中可以有不抽象的方法,接口中全是抽象的方法

    b抽象类用extends继承,接口用implements实现

    c抽象类中的变量和方法没有默认修饰符,接口中的变量默认为public static final的,接口中的方法默认               为public abstract

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


6什么时候用抽象类,什么时候用接口

    a如果能用接口,就不用抽象类,因为别人实现接口可以不占用继承的位置。

    b如果定义一个抽象的父类,其中所有方法都是抽象的,那么就定义为接口。

    c如果定义一个抽象的父类的时候,需要有不抽象的方法,那么只能定义为抽象类。

 


总结:通过学习,区分了抽象类和接口,解决了之前的疑惑。越学越有信心。


你可能感兴趣的:(java学习笔记)