【笔记】 抽象类 和 接口

抽象类(abstract class)

  • 定义:包含抽象方法的的类是abstract class

    用abstract关键字修饰

  • 作用:abstractclass是为了把相同的东西提取出来,即重用

  • 使用abstractclass语法规定

语法 备注
抽象类定义用abstract关键字修饰 要通过子类进行实例化
抽象类是不能被实例化的 只能通过子类进行实例化(extends)
子类必须重写父类的所有抽象方法 抽象方法:声明但却未被实现的方法,用abstract关键字修饰
含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法
抽象类是在功能上的一个规定

接口(Interface)

  • 定义:比abstract class更加抽象,是一种特殊的abstract class

    用Interface关键字修饰

  • 作用:Interface是为了把程序模块进行固化的契约,是为了降低偶合

  • 使用Interface的语法规定
语法 备注
接口定义用Interface关键字修饰  
接口中的所有方法都是抽象的 可以用abstract修饰,也可以省略
接口中的方法必须是用public修饰,或不写 但是不能被其他修饰符修饰
接口中的属性必须是全局常量 public static final修饰
抽象类是用来被它的子类实现的 关键字Implements
抽象类是在结构上的一个规定
接口不能被实例化
子类实现接口时需要实现接口中的所有方法 若有一个未不实现,该子类就是抽象类abstract class

1.抽象类(abstract) :不能被实例化,只能被继承(extends),继承的子类必须全部重写其父类的抽象方法;

2.接口(interface):   不能被实例化,只能被实现(implements),实现子类如果没有全部重写此interface的抽象方法,则此子类就是一个抽象类(absctract)

 1. 抽象类可以有构造方法,有普通成员变量,包含静态方法;接口不能有构造方法 ,没有普通成员变量,不能包含静态方法
 2. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须是抽象的,不能有非抽象的普通方法 
 3. 抽象类中抽象方法的访问类型可以是public,protected和默认类型虽然(eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型,并且默认即为public abstract类型 
 5. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public  static final类型 
 6. 一个类可以实现多个接口,但只能继承一个抽象类

抽象类(abstract)可以看成是普通类的 “ 半抽象” 的结果,可以包含普通类应该有是“构造函数”,“普通成员变量” ,“静态方法” ;

接口(interface)可以看成是普通类的 “完全抽象” 的结构 ,不能有“构造函数” , “普通成员变量” ,“静态方法”;

因为 抽象类(abstract) 有部分属于普通类,所以一个普通类只能继承一个 抽象类(abstract) ;

因为接口(interface)是抽象成的一个“框架”,所以一个类 可以同时实现(implements) 多个接口而不冲突;

猜你喜欢

转载自blog.csdn.net/pirionFordring/article/details/84072715