天天看点

第九章 抽象类和接口Java面向对象基础

Java面向对象基础

第九章 抽象类和接口

一、抽象类

1、抽象方法

(1)对于父类的有些方法,子类在继承父类之后,都会对这些方法进行重写,来满足自己的业务需求,那么向这样的方法,就没有必要存在方法体,那么Java就提供了抽象方法这一概念。

(2)使用abstract关键字修饰的没有方法题的方法,就称之为抽象方法。抽象方法存在的最大作用就是约定子类应该具有该方法,并且必须对这些抽象方法进行重写,提供可运行的方法体。

(3)抽象方法的语法结构:

[访问修饰符]  abstract  返回值类型  方法名([参数列表]);
           
第九章 抽象类和接口Java面向对象基础

(4)抽象方法只能定义在抽象类中,也就是说普通类是无法创建抽象方法的。

(5)抽象方法的作用就是让子类或者实现类进行重写或者实现,那么就不能使用private修饰。

2、抽象类

(1)使用abstract关键字修饰的Java类,能够创建抽象方法的类,称为抽象类。

(2)由于抽象类中存在抽象方法,因此抽象类是无法通过new关键字创建对象的,也就是抽象类不能被实例化。

(3)抽象类存在的意义就是等待子类继承,子类一旦继承于抽象类,那么子类就必须负责将所有的抽象方法进行重写,提供可以运行的方法体,我们称之为实现所有抽象方法。

(4)如果抽象类的子类仍然是一个抽象类,那么这个子抽象类九不再负责重写父抽象类的所有抽象方法。当最终的子类是一个普通类时,那么这个普通类必须负责实现所有抽象类的抽象方法。

二、接口

(1)当约定一个抽象类中所有方法都是抽象方法时,那么这个类就称为接口。

(2)Java中的接口,使用关键字interface进行修饰,里面所有的方法都是抽象方法,而且这些抽象方法不再使用关键字abstract进行修饰。接口可以看成时一种特殊的“抽象类”。

(3)由于接口中的所有方法都是抽象方法,所以不用使用abstract关键字。

(4)语法结构:

[访问修饰符]  interface 接口名{
     //接口成员
}
           
  • 访问修饰符只能时public,且可选
  • 接口成员可以时全局常量和公共的抽象方法。

    (5)接口的使用最大的优点就是进行设计和规范的制定,也就是说架构师或者时项目经理通过设计接口,约定一系列的抽象方法,让其他开发人员通过继承于接口来完成这些约定的抽象方法的实现。

    (6)子类继承于接口,那么我们将这种“继承”称之为“实现”,通过使用关键字implements来完成。将接口的子类不再称之为“子类”,而是“实现类”。被之上,所谓的“实现”就是“继承”。

    (7)实现类实现了接口,那么实现类就必须将接口中所有的抽象方法负责实现,也就是重写。

    (8)接口是可以进行多实现,也就是说一个实现类可以实现多个接口。继承只能够单继承,但是实现可以多实现。

    (9)一个接口也可以通过extends来继承另一个接口。

    (10)更复杂的接口语法结构:

[修饰符]  interface  接口名  extends  父接口1,父接口2,...{
   //方法体
}
           

三、抽象类和接口的区别

第九章 抽象类和接口Java面向对象基础

四、final关键字

final表示最终的,最后的。

(1)当final关键字修饰类是,final class,那么表明这个类将无法被子类进行继承。

Java中String类型就使用了final进行修饰。

(2)当final修饰属性时,那么该属性必须有初始值,而该值将无法改变。

(3)当final修饰局部变量时,该变量一旦赋值,将不再发生改变。

(4)当final修饰方法时,该方法无法被子类进行重写。

(4)一旦static final修饰一个变量时,那么这个变量碧血携带初始值,而public static final修饰一个变量时,这个变量将不再发生变化,我们称之为常量。