首页 > 其他分享 >4、抽象类和接口

4、抽象类和接口

时间:2023-03-17 16:36:43浏览次数:37  
标签:接口 抽象 修饰 抽象类 方法 final

接口和抽象类,主讲:汤小洋

一、final关键字

final表示最终的,可以用来修饰变量、方法和类

1. 修饰变量

被final修饰的变量,称为常量constant,常量的值不能被修改

被static final修饰的变量,称为静态常量,一般也简称为常量(使用较多)

常量命名规范:所有字母全部大写,多个单词之间使用下划线连接

应用:一般用于替代 硬编码 / 僵尸代码 ,大多是难于阅读和理解的值

2. 修饰方法

被final修饰的方法,不能被重写

3. 修饰类

被final修饰的类,不能被继承,即不能有子类

final类中的所有方法都默认为final方法

4. 修饰参数

被final修饰的参数,只能读取,不能修改

二、抽象类

如何防止父类被实例化?

如何保证子类必须重写父类的方法?

1. 概念

被abstract修饰的类,称为抽象类

  • 定义方式:public abstract class 类名{ }

  • 抽象类不能被实例化,即不能使用new创建一个对象,只能被继承

被abstract修饰的方法,称为抽象方法

  • 定义方式:public abstract 返回值类型 方法名();

  • 抽象方法只有声明,没有具体实现,即没有方法体,以分号结尾

2. 特性

抽象类中可以有抽象方法,也可以没有抽象方法

含有抽象方法的类,必须为抽象类

子类继承抽象类后,必须实现/重写抽象类中所有的抽象方法,否则子类仍然为抽象类

抽象类中可以有构造方法,但不是用来创建对象的,而是用来初始化成员属性的

三、接口

如果一个抽象类中只有抽象方法和和常量,则可以定义为接口interface

1. 概念

从本质上讲,接口是一种特殊的抽象类,只能包含常量和抽象方法

2. 用法

2.1 定义接口

语法:

interface 接口名{
   常量;
抽象方法;
}

接口中的属性,默认被 public static final修饰,即接口中只能有常量

接口中的方法,默认被 public abstract修饰,即接口中只能有抽象方法

接口中没有构造方法,不能实例化接口

2.2 实现接口

语法:

class 类名 extends 父类 implements 接口名{
   
}

实现接口的类,称为实现类

实现类必须实现接口中所有的抽象方法,且方法必须使用public修饰,否则其为抽象类

3. 特性

一个类可以实现多个接口,多个接口之间以逗号分隔

JDK1.8及以后,可以使用default关键字修饰方法,此时方法可以有方法体,但一般都为空方法体(简化实现类的操作,无需实现所有方法)

一个接口可以继承多个其他接口,添加新属性和抽象方法,但接口不能继承类

Java中支持接口的多继承,但不支持类的多继承

 

接口实现多态:将接口的引用,指向其实现类的对象

4. 作用

接口的作用:

  • 间接实现多继承(Java不支持多继承,但可以实现多个接口)

  • 通过接口定义规范和标准

  • 将标准的制定和实现分开

注:建议面向接口编程,提高扩展性

5. 接口与抽象类的比较

相同点:

  • 接口和抽象类都不能被实例化

  • 都可以包含抽象方法

不同点:

  • 接口中只能有静态常量,抽象类中还可以有普通成员变量

  • 接口中只能有抽象方法,抽象类中还可以有非抽象方法(使用default关键字时接口中也可以有非抽象方法)

  • 接口不包含构造方法,抽象类可以包含构造方法

  • 接口支持多继承,抽象类不支持多继承

  •  

标签:接口,抽象,修饰,抽象类,方法,final
From: https://www.cnblogs.com/hoboshell/p/17227224.html

相关文章