马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
1、final#
final 属性能够修饰变量、方法和类
1.1 常量
用 final 修饰的变量则称为常量。一旦赋值,其值不能改变的变量。
对象类型的变量中,保存的是对象的地址,因此所谓“一旦赋值,不能改变”,是指的对象的地址不能改变。
final修饰的变量必须由程序员显示指定初始值
final修饰的类变量、实例变量能指定初始值的地方如下
类变量:必须在静态初始化块中或声明该变量时指定初始值。
实例变量:必须在非静态初始化块、声明该变量或构造方法中指定初始值。
file
file
file
file
file
file
file
file
抽象类与普通类的区别是,
1)抽象类除了不能创建对象;
2)抽象方法不能用static修饰。
虽然抽象类不能创建对象,但是抽象类能够声明引用,并让这个引用指向子类对象。
从某种意义上说,写抽象类的目的就是为了能够让子类继承。
2.2 抽象方法#
用 abstract 修饰的方法称为抽象方法。
抽象方法的语法特征:
抽象方法没有方法体,后面的 {} 用 ; 代替。
一个拥有抽象方法的类必须是抽象类,但抽象类中未必有抽象方法。
子类继承抽象类,要么也成为抽象类,要么就必须实现抽象类中的所有抽象方法。
file
file
file
file
2.3 抽象的作用
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
file
方法的声明是共性, 方法的实现是特性。 也就是说,所有形状都能够求周长和求面积,这是共性;
而形状类不同的子类,求周长和求面积的方式不同,这是特性。遇到这种情况,我们就可以利用抽象方法来描述这种关系。
抽象类图形有两个抽象方法,计算周长和计算面积
圆形类继承图形这个抽象类,并实现了计算周长和计算面积
矩形类继承图形这个抽象类,并实现了计算周长和计算面积
file
file
file
file
file
file
file
file
AbstractClass:
是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体的方法。
ConcreteClass:
实现父类所定义的一个或多个抽象方法。每一个AbstractClass 都可以有任意多个ConcreteClass 与之对应,而每个 ConcreteClass 都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。
file
file
file
file
file
file
file
模板方法模式特点:
模板方法模式就是提供了一个很好的代码复用平台。
什么时候用:
有时候,我们会遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的,但有些步骤的实现可能不同。这时候,我们通常就应该要考虑用模板方法模式了。
当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的步骤。
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海牛部落-海牛博士,http://hainiubl.com/topics/153
|