抽象java入门1.5.2

前言:

坑留下来是为了补的

正片:

一、面向对象特性

二、面向对象编程详细展开

这些没有加粗的方法究竟来源哪?

在上一期的提示中,我们说了这些方法来源于面向对象编程的一个特性

验证:

第一步:我们先调用这个方法

观察: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的注解写法是怎么样的(非注解内容)

这期先到这里,剩下的坑下一篇中解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第23天|39. 组合总和、40.组合总和II、131.分割回文串

打卡Day23 1.39. 组合总和2.40.组合总和II3.131.分割回文串 1.39. 组合总和 题目链接:39. 组合总和 文档讲解: 代码随想录 这道题和昨天做的组合之和由两个区别:被选的元素没有数量限制,同时被选的元素可以无限重复,…

JavaScript:节流与防抖

目录 一、前言 二、节流(Throttle) 1、定义 2、使用场景 3、实现原理 4、代码示例 5、封装节流函数 三、防抖(Debounce) 1、定义 2、使用场景 3、实现原理 4、代码示例 5、封装防抖函数 四、异同点总结 一、前言 …

Adobe Premiere Pro(Pr)安装包软件下载

一、简介 Adobe Premiere Pro(简称Pr)是由Adobe公司开发的一款功能强大的视频编辑软件。它支持多平台使用,包括Windows和Mac系统,并且拥有良好的兼容性和高效的性能。Premiere Pro不仅提供了视频剪辑、特效添加、音频处理等基本功…

《从C/C++到Java入门指南》- 9.字符和字符串

字符和字符串 字符类型 Java 中一个字符保存一个Unicode字符,所以一个中文和一个英文字母都占用两个字节。 // 计算1 .. 100 public class Hello {public static void main(String[] args) {char a A;char b 中;System.out.println(a);System.out.println(b)…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 二进制游戏(200分)- 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

Transformer之Vision Transformer结构解读

论文地址 代码地址 写在前面 什么是Transformer呢?就是把符号向量化为Token, 再和位置编码求和或者做阿达玛积,最后送入一定层数的Attention Block构成的Encoder和Decoder,就完成了Transformer的基础功能。 那么,把上…

idea2019版本创建JavaWeb项目并配置Tomcat步骤

一、创建JavaWeb项目 1.新建项目File->New->Project 2. 选择JavaWeb应用在New Project窗口中选择Java后勾选Java EE中的Web Application后点击next即可 3.设置项目名称后点击finish即可 4.至此项目创建完成,检查文件是否齐全,开始配置Tomcat 二、…

IDEA工具中Java语言写小工具遇到的问题

一:读取excel时遇到 org/apache/poi/ss/usermodel/WorkbookProvider 解决办法: 在pom.xml中把poi的引文包放在最前面即可(目前就算放在最后面也不报错了,不知道为啥) 二:本地maven打包时,没有…

base SAS programing学习笔记(read raw files2)

使用COLUMN input和FORMATTED input读入固定位置的外部文件;如下图所示, 1.COLUMN input (按列数读入外部文件数据) 使用column input 不需要按从左到右的顺序读取外部文件的数值,可以是任意读取,也可以重…

STM32F103定时器中断详解

目录 目录 目录 前言 一.什么是定时器 1.1 STM32F103定时器概述 1.2基本定时器 1.2通用定时器 1.3高级定时器 1.4 三种定时器区别 基本定时器(Basic Timer) 通用定时器(General-Purpose Timer) 高级定时器(Advanced Ti…

ubuntu2204配置anacondacuda4090nvidia驱动

背景 某个机房的几台机器前段时间通过dnat暴露至公网后被入侵挖矿,为避免一些安全隐患将这几台机器执行重装系统操作; 这里主要记录配置nvidia驱动及cuda&anaconda。 步骤 大概分为几个步骤 禁用nouveau配置grub显示菜单install nvidia-driveri…

基于Python+Django,开发的一个在线教育系统

一、项目简介 使用Python的web框架Django进行开发的一个在线教育系统! 二、所需要的环境与组件 Python3.6 Django1.11.7 Pymysql Mysql pure_pagination DjangoUeditor captcha xadmin crispy_forms 三、安装 1. 下载项目后进入项目目录cd Online-educ…

配置RIPv2的认证

目录 一、配置IP地址、默认网关、启用端口 1. 路由器R1 2. 路由器R2 3. 路由器R3 4. Server1 5. Server2 二、搭建RIPv2网络 1. R1配置RIPv2 2. R2配置RIPv2 3. Server1 ping Server2 4. Server2 ping Server1 三、模拟网络攻击,为R3配置RIPv2 四、在R…

Linux:Linux权限

目录 1. Linux权限的概念 2. Linux权限管理 2.1 文件访问者的分类 2.2 文件类型和访问权限 2.2.1 文件类型 2.2.2 基本权限 2.3 文件权限值的表示方法 2.4 文件访问权限的相关设置方法 2.4.1 chmod 2.4.2 chown 2.4.3 chgrp 2.4.4 umask 3. file指令 4. Linux目…

base SAS programming学习笔记13(Array)

1.Array array-name{dimension} <elements> array-name&#xff1a;向量名称 dimension&#xff1a;向量长度&#xff0c;默认为1&#xff1b; elements:列出变量名&#xff0c;变量名要么全是数值变量或者全是字符变量 array-name和variable不能相同&#xff1b;也不能和…

C++面试题之判断一个变量是不是指针

对于变量其实对应的就是内存&#xff0c;而内存并没有表明一定是什么数据类型&#xff0c;所以判断变量是否是一个指针其实是一个参数类型匹配问题&#xff0c;在C中支持函数的重载&#xff0c;那么不同的函数因为参数的不同从而匹配不同函数调用过程。 编译器在进行函数匹配调…

JAVA周总结(集合) 0721day

一.Collection集合 集合:可以存放多种类型数据的容器。 集合和数组的区别 数组的长度是固定的,集合的长度根据存储的数据发生改变。 数组只能存同一种类型的数组,而集合可以存多种类型。 1.2 单列集合常用类的继承体系 java.util.List: 添加的元素是有序、可重复 ; Lis…

PostgreSQL简介和安装

一、Postgresql简介&#xff1a; 1、PostgreSql是功能强大的&#xff0c;开源的关系型数据库&#xff0c;底层基于C语言实现&#xff1b; 2、开源&#xff1a;允许对PostgreSql进行封装&#xff0c;用于商业收费&#xff1b; 3、版本迭代速度快&#xff0c;正式版本已经到15.R…

【轻松拿捏】java中为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么?

java中为什么要使用克隆&#xff1f;如何实现对象克隆&#xff1f;深拷贝和浅拷贝区别是什么&#xff1f; 一、如何在Java中实现对象克隆 1.1 浅拷贝 1.2 深拷贝 1.3 区别总结 二、面试回答技巧 1. 定义克隆及其用途 2. 解释浅拷贝和深拷贝 3. 具体实现浅拷贝和深拷贝 …

【Python】使用库 -- 详解

库就是别人已经写好了的代码&#xff0c;可以让我们直接拿来用。 一个编程语言能不能流行起来&#xff0c;一方面取决于语法是否简单方便容易学习&#xff0c;一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库&#xff0c;来应对各种各样的场景。在…