1、final
final 属性能够修饰变量、方法和类
1.1 常量
用 final 修饰的变量则称为常量。一旦赋值,其值不能改变的变量。
对象类型的变量中,保存的是对象的地址,因此所谓“一旦赋值,不能改变”,是指的对象的地址不能改变。
final修饰的变量必须由程序员显示指定初始值
final修饰的类变量、实例变量能指定初始值的地方如下
类变量:必须在静态初始化块中或声明该变量时指定初始值。
实例变量:必须在非静态初始化块、声明该变量或构造方法中指定初始值。
抽象类与普通类的区别是,
1)抽象类除了不能创建对象;
2)抽象方法不能用static修饰。
虽然抽象类不能创建对象,但是抽象类能够声明引用,并让这个引用指向子类对象。
从某种意义上说,写抽象类的目的就是为了能够让子类继承。
2.2 抽象方法
用 abstract 修饰的方法称为抽象方法。
抽象方法的语法特征:
- 抽象方法没有方法体,后面的 {} 用 ; 代替。
- 一个拥有抽象方法的类必须是抽象类,但抽象类中未必有抽象方法。
- 子类继承抽象类,要么也成为抽象类,要么就必须实现抽象类中的所有抽象方法。
2.3 抽象的作用
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
方法的声明是共性, 方法的实现是特性。 也就是说,所有形状都能够求周长和求面积,这是共性;
而形状类不同的子类,求周长和求面积的方式不同,这是特性。遇到这种情况,我们就可以利用抽象方法来描述这种关系。
抽象类图形有两个抽象方法,计算周长和计算面积
圆形类继承图形这个抽象类,并实现了计算周长和计算面积
矩形类继承图形这个抽象类,并实现了计算周长和计算面积
AbstractClass:
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/153