抽象类:
- 概念:
Java 中允许用户创建一个起“模板”作用的类,称为“抽象类”(abstract class),目的是可以根据它的格式来创建和修改新的类。
2.定义及使用:
抽象类是以 abstract 修饰的类,定义抽象类的语法格式如下:
abstract class 类名称
{
声明成员变量;
返回值的数据类型 方法名(参数表)
{
...
}
abstract 返回值的数据类型 方法名(参数表);
//在抽象方法里,不能定义方法体
}
eg:
注意⚠️:
1)不能直接由抽象类创建对象,只能通过抽象类派生出新的子类,再由其子类创建对象。也就是说抽象类不能用 new 运算符来创建实例对象的类,它可以作为父类被它的所有子类共享。
2)抽象方法声明中修饰符 abstract 和 static, private, native 不能并列修饰同一个方法。
3)一个类不能既是最终类,又是抽象类,即 abstract类不能用 final 来修饰。
4)抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类,而定义定义为抽象的方法必须在子类派生时被覆盖。
接口:
- 接口的结构与抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类有以下不同:
a. 接口的数据成员都是静态的且必须初始化,且其初值不能修改。
b. 接口中的方法必须全部声明为 abstract 。
2.接口的定义方法:
[public] interface 接口名称 [extends 父接口名列表]
{
[public] [static] [final] 数据类型 成员变量名 = 常量;
...
[public] [abstract] 返回值的数据类型 方法名(参数表);
...
}
-
接口的实现与引用:
接口只需声明而不用定义方法体,所以接口与抽象类一样不能用 new 运算符直接创建对象,而是利用接口的特性创建一个新类,用它来创建对象。该过程被称为接口的实现,接口的实现需要在声明一个类的同时使用关键字 implements,接口实现的语法格式为:
class 类名称 implements 接口表
{
...
}
eg:
Xnip2019-08-12_19-15-22.png
注意⚠️:
1)如果实现某接口的类不是 abstract 的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法。
2)一个类在实现某接口的抽象方法时必须使用完全相同的方法头。
3)接口中抽象类的访问控制符都已指定为 public ,所以类在实现方法时必须显示的使用 public 修饰符。
-
接口的继承:
一个接口可以有一个以上的父接口,它们之间用逗号隔开,形成父接口列表,新接口将继承所有父接口的变量与方法。如果子接口中定义了与父接口同名的常量或者相同的方法,则父接口中的常量将被隐藏,方法将被覆盖。
Xnip2019-08-12_19-41-14.png -
利用接口实现类的多重继承:
一个类只能有一个直接父类,但它可以同时实现多个接口。一个类在实现多个接口时,在 implements 子句中用逗号分隔个接口名。
Xnip2019-08-12_20-11-58.png
创建一个方便测量代码块执行效率的模板
今日总结感悟:今天突然感到一阵莫名的兴趣,有那么一点领悟了什么的惊奇之感,虽然很多内容还是不能消化透,理解了的也还无法熟练使用,但是我感觉好像这扇门正在慢慢打开,也许不久之后情况就完全不同了。