Day08:别为了钱而放弃权力

今天来谈谈修饰子(Modifier)。

修饰子我觉得可以分为三大类,第一种就是封装用的修饰子,第二种为宣告属性或方法是否为静态,第三种是final。

  1. 封装用修饰子
    封装用修饰子有4种:public, protected, default, private。其中default修饰子在程序中的表达方式是不需要注明,直接留空就代表你要让类别或者属性、方法为default的范围了。
    而封装用修饰子的对象有4种:class, field, method, constructor。
    我时常觉得,只要当我们研究的事物开始有一个以上的维度後,就不是那麽容易了,因为交互影响下就会产生很多可能,而有些可能就会变成特例,就需要时间来思考学习了,但也要清楚,这些的目的都是为了表达出我们想设计的程序而产生的规则。
  • 类别可以宣告protected或private吗?
    不能,因为没有意义。但是内部类别(inner class)可以。
  • 如果类别宣告为default,但是有的成员为public,那这个public成员是不是有点怪怪的?
    没有错,这个public成员是有点没意义的,因为最终包裹这个成员的类别只能被同套件(package)的类别取用,不过这样的程序是可以编译并执行的。
  • 如果类别被其他类别继承,那private的成员也有被继承到吗?
    不会呦。(JLS8.2)
  1. 静态(Static)
    刚刚提到的学习维度问题,很遗憾的static让它又增加了一个维度。不过只要了解到,静态修饰子的目的就是让类别中的成员变成是类别所拥有、公用的,而不是在创建实例後让各个实例拥有的成员。会叫做静态就是这个意思,因为被宣告维静态的成员在JVM类别载入後就成立了,而不是在创建实例时才成立,所以有静态的意味。
    能够被宣告维static的成员有field, method, inner class, block(程序区块,这部分之後应该会写一篇)。

  2. final
    一般我们在程序要存放值的时候,就会宣告出一个变数来存; 那我们是不是可以在之後用同样的变数存放其他的值? 当然可以罗,不过原本存放的值就会被盖掉了,这种现象叫做状态(state)改变。那可不可以让变数在储存一个值之後,就不可以指派其他值进去? 可以的,这时候就需要用到final修饰子,它可以让变数成为常数(constant)。
    final的对象可以为class, field, method; 如果为class或method,就代表对象无法被继承或被覆写。

  • 可不可以同时宣告某个成员为static以及final?
    可以,同时宣告static final就表示该成员在类别载入时就已创建完成,而且不可被修改,绝对的常数。

目前能想到的就这些了,总感觉还有很多种可能没想到,真毛。


<<:  Day6. 常见原型种类及制作方式

>>:  Day08_把四阶文件写的跟资治通监一样~你就赢啦XDDD"(拖走)

虹语岚访仲夏夜-5(专业的小四篇)

有些事    不可跨越 像飞的太靠近太阳  而被融化的翅膀 又或像 艾尔文献出自己的心脏  而领便...

DAY12 特徵工程-资料化约(特徵选取)

特徵工程可以分为两大部分,一是根据现有的资料特徵进行筛选,选出较有影响力的特徵进行训练,另一个是根据...

第 3 集:CSS 魔力

此篇内容不会有 CSS 语法教学,而是着重在使用 Bootstrap 5 时需要具备的 CSS kn...

007 2021线上看

007 2021线上看 世界局势波诡云谲,再度出山的邦德(丹尼尔·克雷格饰)面临有史以来空前的危机。...

【Day 7】Dockerfile x 连千毅:从一排汉堡认识容器映像档

tags: 铁人赛 Docker Dockerfile 汉堡 概述 碎念时间 【以皮毛技术与 AWS...