一、抽象类
概念:只能定义不能实现。即不能产生具体的实列对象。
抽象类定义
语法:
abstract class 类名{
属性、、
方法、、
}
注意事项:
1、有构造函数但不可以实例化对象。
2、可以有抽象方法也可以无抽象方法。
3、抽象方法必须是定义在抽象类中。
抽象类的使用:
1、继承自抽象类的类必须重写所有的抽象方法。随后可以进行对象实例化。未有全部重写抽象类的抽象方法,该类任然是一个抽象类。
2、常规配合多态来使用。强迫子类必须重写抽象方法。保证了多态的安全性。
二、接口
概念:对一个行为的抽象,可以看作定义一种规则。
语法:
接口定义语法:
interface 接口名[extends 接口1,接口2]{
(public abstract)抽象方法、、
(public static final)静态常量、、
}
接口实现语法:
class 类名 [extends 父类] implements 接口1,接口2、、、{
}
小tips:
1、 接口的继承不同于类的继承,可以继承多个接口。
2、实现的类必须重写实现的接口的全部的不同名抽象方法,如果有俩个接口有同名的方法,只需要重写一个同名方法。
3、类的继承和接口实现是相互独立的,所有可以在继承类的时候也实现接口。只要均满足各自的条件就OK。
4、接口类可以定义属性,但是定义的属性是static final的,这意味着这个属性是全局共享的常量。访问方式:
1、接口名.属性名。
2、实现类名.属性名。
3、实现类的实例对象.属性名。
接口新特性
1、接口中可以增加有方法体的方法。(可以不重写,重写必须去掉”default“)
语法(定义时“default不可去掉):
public default 返回值类型 方法名(){
方法体
}
必须重写情况:实现多个接口,且在实现的接口中有重名的default方法。
2、静态方法:
语法:
public static 返回值类型 方法名(){
方法体
}
调用方式:只能接口名调用 。