抽象界说:
抽象就是从多个事物中将共性的,实质的内容抽取出来。
例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。
抽象类:
Java中能够界说没有方法体的方法,该方法的具体完毕由子类完毕,该方法称为抽象方法,包含抽象方法的类就是抽象类。
抽象方法的由来:
多个政策都具有相同的功用,可是功用具体内容有所不同,那么在抽取过程中(docnuke),只抽取了功用界说,并未抽取功用主体,那么只需功用声明,没有功用主体的方法称为抽象方法。
抽象类的特征
抽象类和抽象方法有必要用abstract关键字来润饰。
抽象方法只需方法声明,没有方法体,界说在抽象类中。
格局:润饰符 abstract 返回值类型 函数名(参数列表) ;
抽象类不能够被实例化,也就是不能够用new创建政策。原因如下:
抽象类是具体事物抽取出来的,自身是不具体的,没有对应的实例。例如:犬科是一个抽象的概念,实在存在的是狼和狗。
而且抽象类即使创建了政策,调用抽象方法也没有意义。
抽象类通过其子类实例化,而子类需求覆盖掉抽象类中悉数的抽象方法后才能够创建政策,否则该子类也是抽象类。
注意事项:
抽象类中不必定包含抽象方法,但包含抽象方法的类必定要声明为抽象类
假定一个类被界说为抽象类,则该类不能创建政策
维护抽象类中的数据
抽象类主要是被其他类继承并完毕其抽象方法
抽象类通常是相似类的抽象
相似类:具有相同的特征,不同的方法的类
抽象类总结
1.抽象类不能被实例化(初学者很简单犯的错),假如被实例化,就会报错,编译无法通过。只需抽象类的非抽象子类能够创建政策。
2.抽象类中不必定包含抽象方法,可是有抽象方法的类必定是抽象类。
3.抽象类中的抽象方法仅仅声明,不包含方法体,就是不给出方法的具体完毕也就是方法的具体功用。
4.结构方法,类方法(用 static 润饰的方法)不能声明为抽象方法。
5.抽象类的子类有必要给出抽象类中的抽象方法的具体完毕(avorah),除非该子类也是抽象类。
JAVA 接口和抽象类的差异
实质:从规划层面来说,抽象是对类的抽象,是一种模板规划,接口是行为的抽象,是一种行为的标准
差异:
1.接口的方法默许是public,悉数方法在接口中不能有完毕,抽象类能够有非抽象的方法
2.接口中的实例变量默许是final类型的,而抽象类中则不必定
3.一个类能够完毕多个接口,但最多只能完毕一个抽象类
4.一个类完毕接口的话要完毕接口的悉数方法,而抽象类不必定
5.接口不能用new实例化,但能够声明,可是有必要引证一个完毕该接口的政策