海牛部落 java 系列教程:(8)final 和 abstract

教程 青牛 ⋅ 于 2017-09-15 13:42:26 ⋅ 最后回复由 ww 2021-08-02 10:22:42 ⋅ 17729 阅读

1、final

final 属性能够修饰变量、方法和类

1.1 常量
用 final 修饰的变量则称为常量。一旦赋值,其值不能改变的变量。
对象类型的变量中,保存的是对象的地址,因此所谓“一旦赋值,不能改变”,是指的对象的地址不能改变。
final修饰的变量必须由程序员显示指定初始值
final修饰的类变量、实例变量能指定初始值的地方如下
类变量:必须在静态初始化块中或声明该变量时指定初始值。
实例变量:必须在非静态初始化块、声明该变量或构造方法中指定初始值。

file

file

file

file

file

file

file

file

抽象类与普通类的区别是,
1)抽象类除了不能创建对象;
2)抽象方法不能用static修饰。

虽然抽象类不能创建对象,但是抽象类能够声明引用,并让这个引用指向子类对象。
从某种意义上说,写抽象类的目的就是为了能够让子类继承。

2.2 抽象方法

用 abstract 修饰的方法称为抽象方法。
抽象方法的语法特征:

  1. 抽象方法没有方法体,后面的 {} 用 ; 代替。
  2. 一个拥有抽象方法的类必须是抽象类,但抽象类中未必有抽象方法。
  3. 子类继承抽象类,要么也成为抽象类,要么就必须实现抽象类中的所有抽象方法。

file

file

file

file

2.3 抽象的作用
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

    抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

file

方法的声明是共性, 方法的实现是特性。 也就是说,所有形状都能够求周长和求面积,这是共性;
而形状类不同的子类,求周长和求面积的方式不同,这是特性。遇到这种情况,我们就可以利用抽象方法来描述这种关系。

抽象类图形有两个抽象方法,计算周长和计算面积
圆形类继承图形这个抽象类,并实现了计算周长和计算面积
矩形类继承图形这个抽象类,并实现了计算周长和计算面积

file

file

file

file

file

file

file

file

AbstractClass:

回复帖子,然后刷新页面即可查看隐藏内容

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/153
本帖由 情爱侣 于 7年前 取消置顶
回复数量: 64
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter