抽象类

一、final关键字

final表示最终的,可以用来修饰变量、方法和类
  1. 修饰变量
    被final修饰的变量,称为常量constant,常量的值是不能被修改的
    被static final修饰的变量,称为静态常量,一般也称为常量
    常量命名规范:所有字母全大写,多个单词之间使用下划线连接,如USER_STATE
    应用:一般用于替代硬编码 / 僵尸代码 ,大多是难于阅读和理解的值
  2. 修饰方法
    被final修饰的方法,不能被重写
  3. 修饰类
    被final修饰的类,不能被继承,即不能有子类
    final类中的所有方法都默认为final方法
  4. 修饰参数
    被final修饰的参数,只能读取,不能修改
    5.总结
    final修饰的类没有子类(String,八种基本数据类型对应的包装类byte-Byte short int Integer char )

二、抽象类

如何防止父类被实例化?
如何保证子类必须重写父类的方法?
  1. 概念
    被abstract修饰的类,称为抽象类

定义方式:public abstract class 类名{}
抽象类不能被实例化,即不能使用new创建一个对象,只能被继承

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

定义方式:public abstract 返回值类型 方法名();
抽象方法只有声明,没有具体实现,即没有方法体,以分号结尾

  1. 特性
    抽象类中可以有抽象方法,也可以没有抽象方法
    含有抽象方法的类,必须为抽象类
    子类继承抽象类后,必须实现/重写抽象类中所有的抽象方法,否则子类仍然为抽象类
    抽象类中可以有构造方法,但不是用来创建对象的,而是用来初始化成员属性的

三、接口

如果一个抽象类中只有抽象方法和常量值,则可以定义为接口interface
  1. 概念
    从本质上来讲,接口是一种特殊的抽象类,只能包含常量和方法的声明

  2. 用法
    2.1 定义接口
    语法:
    interface 接口名{
    常量;
    抽象方法;
    }

    接口中的属性,默认被public static final修饰,即接口中只有常量
    接口中的方法,默认被public abstract修饰,即接口中只有抽象方法
    接口中没有构造方法,不能实例化接口
    2.2 实现接口
    语法:
    class 类名 extends 父类 implements 接口名{

}

实现接口的类,称为实现类
实现类必须实现接口中所有的抽象方法,且方法必须使用public修饰,否则其为抽象类
  1. 特性
    一个类可以实现多个接口,多个接口之间以逗号隔开
    JDK1.8及以后,可以使用default关键字修饰方法,此时方法可以有方法体,但一般都为空方法(简化实现类的操作,无需实现所有方法)
    一个接口可以继承多个其他接口,添加新属性和抽象方法,但接口不能继承类
    在Java中支持接口的多继承,但不支持类的多继承
  2. 作用
    接口的作用:

间接实现多继承(Java不支持多继承,但可以实现多个接口)
通过接口定义规范和标准
将标准的制定和实现分开

   建议面向接口编程,提高扩展性
  1. 接口与抽象类的比较
    相同点:

接口和抽象类都不能实例化
都可以包含抽象方法

    不同点:

接口中只有静态常量,抽象类中还可以有普通成员变量
接口中只有抽象方法,抽象类中还可以有非抽象方法(使用default关键字时接口中也可以有非抽象方法)
接口中不包含构造方法,抽象类中可以包含构造方法
接口支持多继承,抽象类不支持多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值