final关键字
可以修饰类,方法,变量(局部变量,方法的参数形参),属性。
1、修饰方法:final修饰的方法在子类当中不能覆盖。原则上尽量不要这样用。
作用:防止子类不经意的更改(更改其内部的方法体)。
例子:某一个类的某一个方法(葵花宝典,只能按照当前类的步骤进行修炼,不能随意更改)。
2、修饰类:final修饰的类不能被继承。
String类是final修饰的,不可以被继承,如果想使用其提供的方法,只能创建其对象后调用方法,或者通过类名调用其静态方法。
Math类是final修饰的,也不可以被继承。
Integer Long 等基本类型的包装类也是final修饰的。
原则上尽量的不要用final修饰类。一些框架比如Spring,Strust2使用动态继承机制技术。
3、final修饰属性(成员变量,成员)
final修饰的属性,在初始化之后,不能修改
4、final static 联合起来使用,修饰的属性或者变量是常量。一般情况下是全部字母大写。
飞机大战类结构
父类
FlyObject 飞行物类(抽象的类型)
子类
Enemy Hero Bullet…
抽象类:是一种特殊的类型,一般来讲,抽象类都包含抽象方法。抽象类不能被实例化,但是可以定义引用指向子类的对象。抽象类一般作为父类来使用,子类必须实现父类的抽象方法。
抽象方法:abstract修饰的方法,没有方法体。
说明:
1、抽象类不能被实例化,但是抽象类型的引用可以指向子类的对象
2、abstract修饰的方法是抽象方法,不能有方法体
3、包含抽象方法的类一定是抽象类,抽象类可以有抽象方法,也可以没有抽象方法
4、抽象类可以被继承,子类需要实现其所有的抽象方法(除非子类也是抽象类)
抽象类的意义在于:
1、为子类提供了一个共用的类型,封装了子类中重复的内容,也就是继承的意义
2、定义有抽象方法,子类虽然有不同的实现,但是该方法的定义是一致的。
作业案例:根据不同图形的周长可以得到面积
说明:1、根据周长计算各种图形的面积,并且比较周长相同时,谁的面积大
2、使用抽象类和其子类的方式进行实现
3、本案例以正方形和圆形为例
正方形的面积 area=0.0625cc c是周长
圆形的面积 area=0.0796cc
图形 Shape 正方形 Square 圆形 Circle