抽象java入门1.5.3.2——类的进阶(中)
前期回顾:抽象java入门1.5.3.1——类的进阶https://blog.csdn.net/c_yanxin_ru/article/details/140858898?spm=1001.2014.3001.5501
总结:
在代码溯源中,我发现了一个奇怪的东西,就是OUT不是类中类(不是常规类的写法)
问题:OUT究竟是什么,是什么机制
简单判断,目前可以验证的两条完全没有问题!
第一:这个out可以被访问,可以说明它的访问权限是公共——public关键词没问题
第二:类可以直接调用,可以说明它带有——static关键词没问题
zhengpian(正片)
在前面的内容中,我们将类和对象进行了一个区分
类(class)、类方法(static function)
对象(object)、对象方法(obj function)
类是如何构造对象并使用对象方法的
在那条代码上,并没有使用new关键字(预留标识符)去构建对象,根据理论(公式)
不是对象就是类,这明显是一个类,然后我们找到源码
新知识
第一个:新的修饰符
第二个: instantiate(实例化)
第三个:新的构造函数方法
第四个:java文件(带过,要不然内容太多了)
先看到第一句代码 public final class system { }
《不是名义上的第一句,是我们需要看的第一句》
公式
权限修饰符 : public private
类修饰符:class
类函数修&变量饰符:static
作用域:{}
形参:()
标识符(变量、预留标识符、关键字、类名等等)
公式的使用
public final class system { }
public 权限修饰符中的公共权限修饰符
final 尚未添加的无名修饰符
class 类修饰符
system 标识符
{} 作用域
公共权限修饰符 + 无名修饰符 + 类修饰符 + 标识符 + 作用域 —— 组成了语句一
标识符相比大家可能是第一次听
复习(小课堂)时间
先来一个爆论,标识符 = 实例化 = 量 = 数学(不是指描述的内容)
它们都有一个共同的特定,它们之下可以具体划分成很多内容
第一个要讲的就是数学,123456是里面的,加减乘除基本运算符是里面的,函数是里面的
第二个要讲的就是量,量可以分为常量,变量
第三个要讲的就是实例化,它包括了类,公共权限构造函数,对象
第四个就是本次的重点,它可以细分为预留标识符我们统称说的关键词,函数名,变量名,常量名,等等,只要是名都可以统称为标识符
如果把标识符定义拿出来,你会发现,这家伙不就是变量名吗?不就是函数名吗?
定义:以下划线_,字母,数字组成,不能以数字开头,不能是关键词(预留标识符)
不就是变量名的定义吗?函数名的定义吗?有一些高大上的词语,其实学会后也就没觉得高大上了,标识符这个名词听着,没有细学的,一上来就要被你唬住。但是呢,把定义说完,一瞬间,B格掉了一半《不就是一个变量名吗,叫这么专业》
用专业的话来说(不是很专业,人话有东西但不多),标识符就和我们的文字一样,我们是怎么理解语句的,通过文字
我有一个苹果,试着理解一下这句话
.
.
.
.
.
.
你可能的理解:《作者手里有一个苹果》,《作者有一个苹果》,《这人吃苹果》
我这个字,文描述的是第一视角
但是在读者眼里,我这个字,文自动的变成了作者,是不是,要不然你怎么知道作者有一个苹果呢
用语文里的内容,读者读的这句话叫陈述句
我们每次在使用字的时候,会自动地去调用文
每次在使用标识符的时候,会自动去地调用定义,像不像
这里可以配合上《类的进阶上中的内容·流程控制中的顺序结构》
计算机在运行的时候,每一个标识符是怎么运行的?
先看到标识符,然后进到对应的数据库里(函数库或者jar包里)读出对应的定义
一条语句里中,我们可以理解成,它全都是由标识符组成,其中的定义会自动去寻找,当然怎么寻找这里会涉及到新知识中的第四点,本期不做过度分析
第一个新内容
说了这么多废话,核心问题final这个标识符(预留标识符、关键词)在这句语句中是什么定义
官方的定义有三种:
> 修饰变量
> 修饰符类
> 修饰符函数
那么我们首要解决的问题是,public final class system {} 是什么语句,又到了我们公式发力了,没有(),意味着不是函数,它还带有class这个类修饰符,说明system是一个类,完美
公式
函数公式,因为没有修改,这里的类修饰符更具体点叫类函数修&变量饰符
final的定义就出来了:表示该类是无法被任何其他类继承的,意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。
翻译一下,这个类以及加入了进化,进化到最终形态了,jojo,不做人拉
而且final在做形容词时,可以翻译成:最终的;最后的
我们就可以清晰的知道了final修饰类的时候,这个类具有什么属性了,无法继承,最后一代,生不出儿子。。。生不出儿子确实是最后一代。。。没毛病
第二个新内容
看到这句
Don't let anyone instantiate this class
不要让任何人实例化这个类
private system
《实例化》
这是一个熟悉又陌生的词,本系列文章中第一次出现,熟悉在哪?
实例化:用类创建对象的过程称为实例化
具体点就是:类,通过构造函数,去构造对象的一个完整过程
熟悉是因为,作者总是隐藏了一个前提,那就是只有类才能产生对象,在不了解这个前提下,你会觉得很陌生
实例化我们知道了,是类通过构造函数生成对象的过程
去实例化呢?
你有没有想法呢?
通过最简单的语言去描述
Q:删除
A:在没有写的时候,java编译器会自动生成一个公共权限修饰符修饰的构造函数
Q:不让其他人能用
A:嗯,用什么手段呢?
Q:我知道权限修饰符可以让别人访问到,还知道一个叫private的私人权限
A:那答案是不是明了
哦,原来我们可以修改构造函数的权限来做到限制,那是不是意味着函数也可以这么做,变量也可以这么做,变量、函数,那可被权限修饰符修饰标识符都可以通过去修改权限去限制
抽象出来的其实是一个权限修饰符的新用法,而不是instantiate实例化
我们来一个小测试,代码如下
按理论,我们是无法使用构造函数,去构造对象的,看报错了
图下是公共访问权限
举一反三试试,变量,用这个是因为可以省去构造一个对象
运行代码
换成私人访问权限
直接报错
理论可行 —— 理论为:限制外人使用,可以修改权限,当然其实是私人访问权限的本质
官方jar包,自己的两个小测试均成功了
补充(量)
字段,这一概念早在之前就已经涉及了但是因为没有用到也就自然跳过了,现在出现了,那就给它补充完整!
字段这一词和变量,常量,各种乱七八糟的量有共同的描述内容——即元素——代词(量),如图
发现一个细节没,字段,常量,变量的大小,这里指的是描述的内容
量最大,其次变量,常量,最小的字段
量描述的是一切
这一切里面又可以分为三大类——常量,变量,未知量
字段?补充一个前提
量代称字段,简单点,量名中的名就是字段,那它不是最大吗?
内容是比较它们大小的元素,而名只是个代词,不对大小进行描述
public static final PrintStream out = null;
PrintStream out
//out 类型为PrintStream的字段名out
为了以后我们的文章统一将变量名,常量名统称为——某某类型的字段名为xxx
Q:字段名有啥用呢?
A:这就不得不提及到不一样java入门的核心了,编程语言的发展无限趋近于自然语言
用字典就能让你知道字段名有什么用,这就和官方提供的API接口文档一样,一个词对应解释,还能减少多余的容错
核心问题,还未解决,敬请期待