最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

java 系列教程:(8)final 和 abstract

[复制链接]
跳转到指定楼层
楼主
发表于 2018-1-22 15:52:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

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
楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-7 23:49

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表