前言:
坑留下来是为了补的
正片:
一、面向对象特性
二、面向对象编程详细展开
这些没有加粗的方法究竟来源哪?
在上一期的提示中,我们说了这些方法来源于面向对象编程的一个特性
验证:
第一步:我们先调用这个方法
观察:import关键词没有增加,说明这些方法是java内部的
第二步:Crtl + 左键 方法
观察:我们来到了这个方法的出处,源头
由两部分组成
Q:放屁,上面的绿色是什么,不应该是三部分吗
A:绿色的是文档注释,剩下的看不懂,不看,无视掉
***************************************************************************************************
补充:如何实现文档注释
IDEA /** + 回车会自动补充
处理猴
内容:想法
文档化:点一下就知道了
那怎么写出和官方一样的注释呢?
第一步:/** + 回车 ----- 创建文档注释
第二步:写下我们的内容
第三步:文档化
第四步:太丑了,没有官方文档的美观
先看看官方是怎么写的
如果你学过前端,你就知道这玩意的美观程度是由HTML标签实现的,既然美观程度还需要再去学HTML
那那那,下面这种中文至少要会吧
就当记几个英语单词
@param 形参
@apiNote api-note —— 接口说明
@implSpec impl-Spec ——实现,要求
@return 返回值
@see 请参阅
******************************************************************************************************
绿色的部分现在我们知道了是什么,就是一大串注释
看过1.5.0~1.5.1的小伙伴就知道这两部分是什么了,没看过的也可以作为参考
@IntrinsicCandidate
public native int hashCode();
@intrinsicCandiDate 这是一个注解
public native int hashcode();
是函数吗?
函数公式:访问权限修饰符 + 返回值类型 + 函数名 + 参数 + 函数体
publi + native + int + hashCode + ();结束了
第一个疑问:native是什么?
第二个疑问:没有花括号,意味着没有函数体
第三个疑问:公式不应该会出错,那为什么IDEA的提示框里会以方法的形态显示呢
一个萝卜一个坑,挨个解决
第一个坑:native
公式:访问权限修饰符 + 未知的修饰符(native) + 返回值类型 + 函数名 + 参数 + 函数体
函数名就是一个简单的名词,名称代词,不需要赋予太高深的定义
未知的修饰符(native)的翻译如下
出生国的;出生地的;土生土长的
-------翻译来源剑桥词典
第一点:形容词 换个名词代词 修饰符
第二点:浓缩就是精华,不仅可以减少大脑内存,还能增加枚举速度
三个词语太多了 ,(过程省略......)
花了我两亿万个脑细胞所总结的词 —— 伴生
举例:人剩下来的那一刻,伴生的器官还没有发育良好
native —— 伴生
java语言诞生那一刻,伴生的方法带有native修饰符
那么非伴生方法可以用native修饰符吗
很显然,我们不能直接使用native修饰符去进行修饰函数名
第二个坑:没有花括号,意味着没有函数体,它还能算函数吗
在第一个坑中,我们已经知道了这个native是什么意思,但是这个函数没有方法体它能算函数是我们的第二个坑
注意,它还有注解@IntrinsicCandidate,Ctrl + 鼠标左键点进去
public + @interface + IntrinsicCandidate + { }
这,这,这,好眼熟
前者是 public + @interface + IntrinsicCandidate + { } 后者是 public + class + user + {}
补小坑:这是java文件四大分类中的两大分类
好吧,五大类
我们先接触的是最基本的载体 —— class
其次是 —— @interface
让我们手动新建一个注解
怎么用它
@注解名
验证,CTRL + 鼠标左键 点击,会跳转到原文件
有前面学的特别好的人就知道会问,public是权限修饰符,我们权限修饰符学了两个,另一个能用吗?
毛选实践论中说了,先认识,再实践,最后区分,现在我们还是第一个阶段,先认识,现在我们认识到的是
第一:注解中必须有修饰符 @interface
第二:注解中必须有注解名 (类名)
第三:注解的修饰符只能是public
第四:调用注解只需要@注解名
可是到这一步,也仅仅是知道了怎么创建注解,怎么调用注解,怎么使用注解我们还不知道!
先来一个hell word,试试看
报错了,这个时候,我们看看官方对注解的定义注解可以用于类、方法、变量、参数和包等,并且可以通过反射获取注解内容
第一:注解是可以有内容的,但是内容不能是hello wrod,也就是方法的调用
第二:注解的内容是可以通过反射这个机制来获取的
第三:java文件,java方法,java变量等等都可以调用注解,通过反射获取注解内容
注解是java文件,java文件可以调用注解
问题:@Target的注解写法是怎么样的(非注解内容)
@Retention的注解写法是怎么样的(非注解内容)
这期先到这里,剩下的坑下一篇中解决