Java基础知识回顾—1

final关键字

fina修饰,恒定指向一个对象,无法改变指针(只能修改一次)

  • final修饰符可修饰类、方法、变量
  • final标记的类不能被继承
  • final标记的方法不能被子类覆盖
  • final标记的变量(成员变量或局部变量)就成为常量,只能赋值一次(只能一次被显式赋值,可在构造方法、静态代码块、非静态等当中)
  • 形参定义成final也可以,这样就限定了不能再方法中修改形参的值
  • 用public static final共同标记一个常量

补充

  • 对于基本类型,final使得数值恒定不变
  • 对于对象引用,final使得引用恒定不变
    ·· 一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象
    ·· 但是对象其自身确实可以被修改的

例子

  • String类是使用final修饰的,所以不能被继承
    Java基础知识回顾—1

  • Object类中getClass使用final修饰的,所以无法覆盖

  • Java基础知识回顾—1

  • 其他很多例子

抽象类

  • 不允许被实例化

  • 通过abstract关键字修饰

  • 含有0个或多个用abstract修饰的方法(抽象方法)

  • 抽象方法没有方法体

  • 意义
    ·· 避免创建父类对象
    ·· 避免调用无意义的父类方法

    抽象类的子类

    子类在继承抽象类时

    • 可以实现父类中的抽象方法(将方法具体化)
    • 如不实现,子类成为抽象类,用关键字abstract关键字修饰

    接口

    接口同普通类一样是一种类型
    使用interface代替class定义
    所有属性都是用public static final修饰的(public static final修饰默认省略)
    所有的方法都是用public修饰的(public默认自动省略)
    方法没有方法体
    不允许有静态方法

    注意

    • 声明为一个接口类型的变量,可以将实现了对应接口的类的实例对象赋值给该变量。
    • 在定义时,尽可能的考虑全面,将可能的接口方法定义完全。
    • 当发现接口方法定义不完全的时候,通过接口继承,定义新的接口方法的方式来处理。

    接口的实现

    • 类可以实现一个或多个接口
    • 实现接口通过关键字implements关键字
    • 没有实现接口中全部方法的时候需要定义此类为抽象类

    接口与多重继承

    • Java中不允许多重继承(及同时继承两个或以上的类,这也是接口出现的一方面原因)
    • 在需要多重继承的情况下,接口提供了一种替代方案
    • 实现了多个接口的类生成的对象可以有多种类型

    接口与抽象类

    • 抽象类
    1. 可以定义非(static&final)的字段
    2. 可以定义方法实现
    3. 抽象类的一个公用就是通过子类化来实现代码共享
    • 接口
    1. 定义的方法全部为abstract方法
    2. 一个类可以实现任意数量的接口,为不管这些接口之间的关系