Java中的包机制、final和super关键字

一、包机制

关于java语言当中的包机制:

  1.包又被称为package,java中引入package这种语法机制主要是为了方便程序的管理。

不同功能的类被分门别类放到不同的软件包当中,查找比较方便,管理比较方便,易维护。

  2.怎么定义package呢?

     —在java源程序的第一行上编写package语句。

     —package只能编写一个语句

     —语法结构:

             package 包名;

 3.包名的命名规范:

      公司域名倒序+项目名+模块名+功能名;

采用这种方式重名的纪律较低。因为公司域名具有全球唯一性。

 4.包名要求全部小写,包名也是标识符,必须遵守标识符的命名规则。

 5.一个包对应一个目录

 例如:com.bjpowernode.javase.day;    //4个目录【目录之间用.隔开】

 6.使用package机制后应该怎么编译?怎么运行呢?

     —使用package机制后,类名不再是Test01了,类名是com.bjpowernode.javase.day.Test01;

     —编译:javac java源文件路径 (在硬盘上生成了一个class文件:Test01.class)

     —手动方式创建目录,将Test01.class字节码文件放到指定的目录下

     —运行:java com.bjpowernode.javase.day.Test01

    —另一种方式(编译+运行):

         *编译: javac  —d .编译之后存放路径  java源文件路径

                  javac 负责编译的命令

                  -d     带包编译

                  .        代表编译之后生成的东西放到当前目录下(点代表当前目录)

         *例如:将F:\Hellow.java文件编译之后放到C:\目录下

              java —d C:\ F:\Hellow.java

        *javac —d .*.java

               将当前路径中*.java编译之后存放到当前目录下

        *运行:JVM的类加载器ClassLoader默认从当前路径下下载。保证DOS命令窗口的路径先切换到com所在的路径,执行com.bjpowernode.javase.day.Test01

java.lang.*;不需要手动引入,系统自动引入。

 lang:language语言包,是java语言的核心类,不需要手动引入。

 import语句用来完成导入其他类,同一个包下的类不需要导入,不在同一个包下需要手动导入。

 import语法格式:

     import 类名

     import 包名.*

 import语句需要编写到package语句之下,class语句之上

 什么时候需要import?

    不是java.lang包下,并且不再同一个包下的时候,需要使用import进行引入。

访问控制权限修饰符:

   1.访问控制权限修饰符来控制元素的访问范围

   2.访问控制权限修饰符包括:

     public                      表示公开的,在任何位置都可以访问

     protected                同包 子类

     缺省                         同包

     private                     表示私有的,只能在本类中访问

  3.访问控制权限修饰符可以修饰类,方法,变量

  4.当某个数据只希望子类使用时,使用protected进行修饰。

  5.修饰符的范围:

      private<缺省<protected<public

  6.类只能采用public和缺省的修饰符进行修饰【内部类除外】

二、final关键字

 关于Java语言当中final关键字:

    1.final是一个关键字,表示最终的,不可变的

    2.final修饰的类无法被继承

    3.final修饰的方法无法被覆盖

    4.final修饰的变量“一旦”赋值之后,不可重新赋值【不可二次赋值】

    5.final修饰的实例变量,必须手动赋值,不能采用系统默认值(实例变量有默认值,final修饰的变量一旦赋值不能重新赋值)

    6.final修饰的引用,一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器回收

final修饰的引用虽然指向某个对象之后不能指向其他对象,但是所指向的对象内部的内存是可以被修改的。

    7.final修饰的实例变量,一般和static联合使用,被称为常量。

       常量的定义语法格式:public static final 类型 常量名 = 值;

       java程序中要求所有常量的名字全部大写,每个单词之间使用下划线连接

 //创建用户对象

User u = new User(100); //User u=0X1234

//又创建了一个新的User对象

//程序执行到此处表示以上对象已变成垃圾数据,等待垃圾回收器的回收

 u = new User(200); //u = 0X2586

//创建用户对象

 final User user = new User(30);

 //user = new User(50); // 编译错误

User.id=50; //编译通过

实例变量采用final赋值

  第一种方式:

     final int age = 10;  //直接赋值

 第二种方式:

   final int num;

   public 类名(){

     this.num = 100;

   }                                 //采用构造方法赋值

三、super关键字

1.super是一个关键字,全部小写

 2.super和this对比学习:

   this:

      this能出现在实例方法和构造方法当中

      this的语法时:”this.“ ”this()“

      this不能使用在静态方法中

      this.大部分情况下是可以省略的

      this.什么时候不能省略呢?在区分局部变量和实例变量的时候不能省略

         public void setName(String name){

              this.name=name;

          }

       this()只能出现在构造方法第一行,通过当前的构造方法去调用”本类“中其他的构造

方法,目的是:代码复用

    super     

     super能出现在实例方法和构造方法当中

     super的语法时:”super.“ ”super()“

     super不能使用在静态方法中

     super.大部分情况下是可以省略的

      super.什么时候不能省略呢?

        父中有,字中又有,如果想在字中访问”父类特征“,super.不能省略

      super()只能出现在构造方法第一行,通过当前的构造方法去调用”父类“中的构造

方法,目的是:创建子类对象的时候,先初始化父类型特征

   3.super()

         表示通过子类的构造方法调用父类的构造方法。

模拟现实世界的这种场景,要想有儿子,需要先有父亲

  4.结论:当一个构造方法第一行既没有this(),又没有super()的话,默认会有一个super();表示通过当前子类的构造方法调用父类的无参数构造方法。所以必须保证父类无参数的构造方法是存在的。

  5.注意:super()和this()不能共存,他们都是只能出现在构造方法第一行

  6.无论是怎么判断,父类的构造方法是一定会执行。(百分之百的)

  7.在java语言当中不管是new什么对象,最后的Obiect类的无参数构造方法一定会执行。(Object类的无参数构造方法是处于”栈顶部“)

       栈顶的特点:

             最后调用但是最先执行结束。后进先出原则。

  8.super代表的是"当前对象(this)"的“父类型特征。

  9.在构造方法执行的过程中一连串调用了父类的构造方法,父类的构造方法又继续向下调用它的父类的构造方法,但是实际上对象只创建了一个。

 10.super(实参)到底是干啥的?

         super(实参)的作用是:初始化当前对象的父类型特征。并不是创建对象,实际上对象只创建了1个。

 11.super关键字代表什么呀?

        super关键字代表的就是“当前对象”的那部分父类型特征

java是怎么区分子类和父类的同名属性的?

   this.name   当前对象的name属性

   super.naem  当前对象的父类型特征中的name属性

 super不是引用,super也不保存内存地址,super也不指向任何对象

 super只是代表当前对象内部的那一块父类型的特征

 在父和子中有同名的属性,或者说有相同的方法,如果此时想在子类中访问父中的数据,必须使用"super"加以区分

 super.属性名              【访问父类的属性】

 super.方法名(实参) 【访问父类的方法】

 super(实参)              【调用父类的构造方法】

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

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

相关文章

第 7 章 排序算法

文章目录 7.1 排序算法的介绍7.3 算法的时间复杂度7.3.1 度量一个程序(算法)执行时间的两种方法7.3.2 时间频度7.3.3 时间复杂度7.3.4 常见的时间复杂度7.3.5 平均时间复杂度和最坏时间复杂度 7.4 算法的空间复杂度简介7.4.1 基本介绍 7.5 冒泡排序7.5.1 基本介绍7.5.2 演示冒泡…

Spring的纯注解配置

1、带改造的问题 我们发现&#xff0c;之所以我们现在离不开xml配置文件&#xff0c;是因为我们有一处很关键的配置&#xff0c;如果他要也能用注解配置&#xff0c;那么我们就可以脱离xml文件了&#xff1a; jdbc的配置 改造前&#xff1a; <context:property-placehol…

Redis的主从配置,哨兵模式,集群模式

目录 什么是主从复制&#xff1f; 主从复制的作用&#xff1f; 主从复制的流程&#xff1f; 搭建Redis的主从复制 安装Redis 环境准备 修改内核参数 安装Redis 定义systemd服务管理脚本 修改Redis配置文件&#xff08;Master节点操作&#xff09;192.168.17.25 修改Re…

js通过用 splice() 方法将一个数组插入到另一个数组的指定位置

在 JavaScript 中&#xff0c;可以使用 splice() 方法将一个数组插入到另一个数组的指定位置。splice() 方法用于向数组中添加或删除元素&#xff0c;并返回被删除的元素。 以下是一个示例代码&#xff1a; const array1 [1, 2, 3]; const array2 [4, 5, 6];const deletedE…

【数据库】聊聊MVCC机制与BufferPool缓存机制

上一篇文章&#xff0c;介绍了隔离级别&#xff0c;MySQL默认是使用可重复读&#xff0c;但是在可重复读的级别下&#xff0c;可能会出现幻读&#xff0c;也就是读取到另一个session添加的数据&#xff0c;那么除了配合使用间隙锁的方式&#xff0c;还使用了MVCC机制解决&#…

Linux重点

Linux命令的组成&#xff1f; a. 命令本身&#xff0c;选项&#xff0c;参数。查看的两个操作 a. cat 适合小文件 b. more分页查询适合中文件创建文件的选项有啥&#xff1f;创建文件的小技巧 a. 选项有-p b. 不管是否创建创建递进的文件&#xff0c;先给-p加上&#xff0c;加上…

DSL查询文档--查询结果处理

排序 elasticsearch默认是根据相关度算分&#xff08;_score&#xff09;来排序&#xff0c;但是也支持自定义方式对搜索结果排序。可以排序字段类型有&#xff1a;keyword类型、数值类型、地理坐标类型、日期类型等。 普通字段排序 keyword、数值、日期类型排序的语法基本一…

Android 实现获取集合中出现重复数据的值和数量

方法一&#xff1a;使用HashMap和HashSet 创建一个HashMap&#xff0c;用于存储集合中的元素及其出现次数。 Map<String, Integer> map new HashMap<>();遍历集合&#xff0c;将每个元素作为键&#xff0c;将其出现次数作为值添加到HashMap中。 for (String it…

【grid】pytorch中的Flow_filed,MES,affine_gridHGRID,GRID_SAMPLE详解

grid in Pytorch 官方链接&#xff1a; https://pytorch.org/docs/stable/generated/torch.nn.functional.grid_sample.html#torch.nn.functional.grid_sample https://pytorch.org/docs/stable/generated/torch.nn.functional.grid_sample.html#torch-nn-functional-grid-sa…

SSH远程访问与控制

ssh优点 数据传输是加密的&#xff0c;可以防止信息泄露 数据传输是压缩的&#xff0c;可以提高传输速度 作用 sshd 服务使用 SSH 协议可以用来进行远程控制&#xff0c;或在计算机之间传送文件。 ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务&#xff08;文件传…

对C语言的理解

1.计算机语言 就是我们人类与计算机进行交流的媒介。我们可以使用编程语言对计算机下达命令&#xff0c;从而让计算机完成我们所需要的功能。 语言 语法 逻辑 计算机语言有很多种。如&#xff1a;C 、C、Java、Go、JavaScript、Python&#xff0c;Scala等。 2.计算机语言简史…

宠物空气净化器品牌推荐哪个牌子好?五款猫用空气净化器高质量推荐品牌

养宠人家里除了猫粮、猫砂和罐头等必备的日常用品外&#xff0c;宠物空气净化器也是必需的。它可以在我们不方便开窗通风的日子里&#xff0c;有效净化室内空气&#xff0c;并且能够有效减少动物皮屑引起的过敏反应。然而&#xff0c;面对市场上琳琅满目的新款空气净化器、功能…

嵌入式简历填写的相关注意事项

嵌入式简历 最近无聊在看咋写嵌入式简历的相关视频&#xff0c;这里就总结下。 嵌入式简历注意方法 自己的联系方式&#xff0c;包括姓名&#xff0c;性别&#xff0c;住在哪里&#xff08;大概外置就行&#xff09;&#xff0c;电话号码&#xff0c;邮箱&#xff08;最好不是…

Webpack模块打包工具

目录 Webpack模块打包工具知识点自测01.Webpack 简介以及体验目标讲解小结 02.Webpack 修改入口和出口目标讲解小结 03.案例-用户登录-长度判断目标讲解小结 04.Webpack 自动生成 html 文件目标讲解小结 05.Webpack-打包 css 代码目标讲解小结 06.优化-提取 css 代码目标讲解小…

浅谈对Maven的理解

一、什么是Maven Maven——是Java社区事实标准的项目管理工具&#xff0c;能帮你从琐碎的手工劳动中解脱出来&#xff0c;帮你规范整个组织的构建系统。不仅如此&#xff0c;它还有依赖管理、自动生成项目站点等特性&#xff0c;已经有无数的开源项目使用它来构建项目并促进团队…

C++ Webserver从零开始:基础知识(三)——Linux服务器程序框架

目录 前言 一.服务器编程基础框架 C/S模型 主要框架 二.I/O模型 阻塞I/O 非阻塞I/O 异步I/O 三.两种高效的事件处理模式 Reactor Proactor 四.模拟Proactor模式 五.半同步/半异步的并发模式 六.有限状态机 七.其他提高服务器性能的方法 池 数据复制 上下文切换…

浅谈缓存最终一致性的解决方案

浅谈缓存最终一致性的解决方案 作者&#xff1a;clareguo&#xff0c;腾讯 CSIG 后台开发工程师 来源&#xff1a;腾讯技术工程open in new window 到底是更新缓存还是删除缓存? 到底是先更新数据库&#xff0c;再删除缓存&#xff0c;还是先删除缓存&#xff0c;再更新数据…

非常非常实用!不能错过,独家原创,9种很少人听过,但却实用的混沌映射!!!以鲸鱼混沌映射为例,使用简便

很多人在改进的时候&#xff0c;想着增加混沌映射&#xff0c;增加初始种群的多样性&#xff0c;可是&#xff0c;大多数论文中常见的映射&#xff0c;都被别人使用了&#xff0c;或者不知道被别人有没有使用&#xff0c; 本文介绍9种很少人知道&#xff0c;但非常实用混沌映射…

线性调频信号的解线调(dechirp,去斜)处理matlab仿真

线性调频信号的解线调 线性调频信号的回波模型参考信号去斜处理去斜处理傅里叶变换得到脉压结果解线调仿真总结 线性调频信号的回波模型 对于线性调频脉冲压缩雷达&#xff0c;其发射信号为&#xff1a; s ( t ) r e c t ( t T ) e x p ( j π μ t 2 ) \begin{equation} s(…

强化学习求解TSP:Qlearning求解旅行商问题(Traveling salesman problem, TSP)

一、Qlearning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于奖励的决策问题。它是一种无模型的学习方法&#xff0c;通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策&#xff0c;该函数表示在给定状态下采取某个动作所获…