Java面向对象小结.2021.11.1

80 阅读3分钟

final关键字

fianl 关键字可以用来修饰类,方法,变量
    final 修饰类:表示此类不可以被继承
    final 修饰方法:表示此方法不可以被重写
    final 修饰普通变量:表示此变量不可被更改,即为常量,常量的命名通常全部使用大写字母,在创建过程中,只能够也必须显示赋值一次。
    final 修饰静态成员变量:表示全局常量,只能够也必须显示赋值一次;访问一个类的基本数据类型和 String 类型的 final 全局常量不触发类加载。
    String 类是被 final 修饰的,所以 String 类不可以更改。

多态(polymorphic)

对于java而言,在父类引用指向子类对象时,用一句话来行为对象名点访问成员变量:
      编译时(访问范围)看左边,运行时(访问结果)看左边
用一句话描述方法调用时的多态现象:
      编译(访问范围)看左边,运行时(调用结果)看右边

抽象类

语法:
    [权限修饰符] abstract 返回值类型 方法名(形参列表);
该方法必须是一个抽象方法,抽象方法必须在抽象类中,抽象方法没有方法体,只有方法声明。
抽象类无法被实例化,只能用子类去继承,采用多态的形式去访问。
抽象类虽然不能被实例化,但是可以有构造方法,是留给子类初始化时调用的。
- 总结抽象类成员
  - 构造方法:同普通类
  - 成员变量:同普通类
  - 成员方法:可以是抽象方法,也可以是非抽象方法

- 抽象类的子类可以是抽象类,也可以是具体类
- 只有当子类重写了,所有的继承自抽象类的方法,该子类才能被定义为具体类
- 反之,若任一抽象方法没有被重写,该类都必须定义为抽象类
抽象类与实现类需要具有“is-a”关系,不能单纯为了代码的复用而去继承抽象类。

接口(interface)

语法:
    [访问权限修饰符] interface 接口名{}
接口并不是类,而是一种独立的数据结构,和类并列。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
一个非抽象类继承接口,称之为实现接口,必须要重写接口的所有抽象方法,否则会编译报错,使用关键字 implements 去实现接口。
语法:
    class 类名 implements 接口名 {}
java中,类的继承是有限制的,是单继承的,但是接口的实现是不受限制的,可以多实现。
    class SubClass extends SuperClass implements InterfaceA{} 
接口中的所有方法都默认是由public abstract修饰的
接口之间不能相互实现,但是可以相互继承,接口能不能继承类。
java8中,接口不仅仅可以定义抽象方法,而且可以定义默认方法和静态方法。