Java的学习之路——抽象类与接口

19 abstract
19.1 抽象类:使用abstract修饰
19.1.1 特点:可以被继承,不能实例化(与final类相反)
19.1.2 包含:抽象类也是类,普通类里面有的抽象类里面也都有:属性、方法、代码块、构造器,抽象类中可以包含抽象方法
19.2 抽象方法:使用关键字abstract修饰的方法,只有方法的声明(定义),没有功能
什么时候定义抽象类:子类中必须要有的,而且子类还有自己的实现的方法,即必须重写的方法
19.3 抽象类与抽象方法的关系:抽象类不一定包含抽象方法,但是包含抽象方法的类,一定是抽象类
19.4 一个类继承抽象类就必须重写抽象类中的抽象方法,否则这个类就是抽象类
19.5 抽象类与一般类的比较
相同点:都是用来描述事物的,都在内部定义成员
19.6 不同
一般类有足够的星系描述事物,抽象类描述事物的信息可能不足
一般类中不能定义抽象方法们只能定义非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法
一般类可以被实例化。抽象类不可以被实例化
19.7 不能用abstract修饰属性,构造器,private,final,static
20 接口
定义:接口是抽象方法和常量值的定义的集合
即接口中只能定义抽象方法和常量
从本质讲,接口是一种特殊的抽象函数,只包含常量和方法的定义,而没有变量和方法的实现
接口定义的抽象方法其实可以理解为功能,具体的实现由类来实现
无构造器
语法 interface A{}
说明(JDK1.7之前)
接口中的所有成员变量都默认是由public static final修饰的(固定的)
接口中的所有方法都默认是由public abstract修饰的(固定的)。
实现接口 使用implements:class B implements A{}
接口与接口之间的关系:继承,使用extends关键字,而且接口可以多继承
一个类去实现一个接口,那么这个类叫做实现类。这个类就有了接口中定义的功能,
具体如何实现功能由实现类完成(重写/实现接口中定义佛如抽象方法)
接口没有构造方法。如果实现接口的类没有实现接口中的全部方法,必须将此类定义为抽象类
接口与抽象的比较
相同点
接口和抽象类都不能被实例化。只能被其他类实现和继承。
接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方法,否则实现的类就是抽象类。
不同点
抽象类与接口定义不同:抽象类abstract class ,接口 interface
接口里只能包含抽象方法,不包含已经实现的方法();抽象类则完全可以包含普通的方法。
接口里不能定义静态方法();抽象类可以定义静态方法
接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性,也可以定义静态常量
接口不包含构造函数;抽象类包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。
接口不包含初始化块,但抽象类可以包含初始化块
一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java的单继承不足

猜你喜欢

转载自blog.csdn.net/chaolingw/article/details/81088821