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

news2025/1/31 8:19:14

一、包机制

关于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.coloradmin.cn/o/1383320.html

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

相关文章

第 4 课 创建工作空间与功能包

文章目录 第 4 课 创建工作空间与功能包1.工作环境的创建2.ROS功能包的创建 第 4 课 创建工作空间与功能包 消息和服务的创建、发布器和订阅器的编写、服务端和客户端的编写都是基于Ros功能包进行操作的&#xff0c;因此在进行上述操作前&#xff0c;需要先创建工作空间及功能包…

基于Springboot的网上点餐系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的网上点餐系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&am…

【Java学习】Java环境变量——配置jdk

本文我主要是介绍jdk的下载方式和在Windows系统下安装配置jdk11&#xff08;压缩包格式&#xff09;&#xff0c;其他格式的jdk以及Linux操作系统上的jdk安装我后续视情况进行更新… JDK的下载 大家可以去官网Java|Oracle下载对应的资源&#xff0c;也可以下载文末我上传的jd…

8 - MySQL数据读写分离|MySQL多实例

MySQL数据读写分离&#xff5c;MySQL多实例 MySQL数据读写分离数据读写分离如何实现数据的读写分离提供数据读写分离服务的软件&#xff08;中间件&#xff09;maxscale 软件提供的读写分离服务的工作过程配置数据读写分离结构 提供数据存储服务 MySQL多实例 MySQL数据读写分离…

最新国内可用GPT4、Midjourney绘画、DALL-E3文生图模型教程

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

Zabbix监控系统及部署

目录 前言 一个完整的项目 业务架构 运维架构 优秀监控软件的好处 1.zabbix概述 zabbix是什么 zabbix监控原理 Zabbix6.0新特性 1.Zabbix server高可用防止硬件故障或计划维护期的停机 2.Zabbix6.0 LTS新增Kubernetes监控功能&#xff0c;可以在Kubernetes系统从多个…

选择服务商搭建WiFi贴码小程序,有哪些注意事项呢?

随着移动互联网的快速发展&#xff0c;共享WiFi已经成为人们生活中不可或缺的一部分。在各种公共场所&#xff0c;如咖啡厅、餐厅、酒店、商场等&#xff0c;提供免费WiFi已经成为一种趋势。而WiFi贴码小程序的出现&#xff0c;为商家和用户提供了一个便捷的连接方式。那么&…

多语言历史报纸广告事件抽取(ACL2023)

1、写作动机&#xff1a; 首先&#xff0c;获取大规模的、有注释的历史数据集是困难的&#xff0c;因为只有领域专家才能可靠地为它们打标签。其次&#xff0c;大多数现成的NLP模型是在现代语言文本上训练的&#xff0c;这使得它们在应用于历史语料库时效果显著降低。这对于研…

2024年《一个项目征服Java中高级体系》博客计划

终于下决心来写一套大型的Java 笔记&#xff0c;不为别的&#xff0c;就是为了强迫自己将整个Java体系梳理清楚&#xff0c;让自己成为内功扎实的Java高级架构师。牛已经吹出来了&#xff0c;不做对不起网友&#xff01; 经过一个多月的持续规划&#xff0c;现在终于定好了整体…

调用Clarifai API提取图像特征

官方文档放前面&#xff1a;Images | Clarifai Guide 功能很多&#xff0c;有各种不同的模型&#xff0c;可以提取不同的图像特征&#xff0c;比如图像摘要、图像实体等。。。 具体的调用过程&#xff1a; 1.进入官方网站Full Stack AI Developer Platform: Production Compu…

FPGA 移位运算与乘法

题目&#xff1a; 已知d为一个8位数&#xff0c;请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效&#xff08;d给出的信号的上升沿表示写入有效&#xff09; 由题意可知&#xff1a; 复位信号高有效&#xff0c;低复位&#xff1b;在inpu_grant上升…

关于编程的一些小小记录

这里记录一些关于编程的小技巧吧&#xff0c;算是个记录 1&#xff0c;vs同时有多个cpp文件怎么办&#xff1f; 我们只想运行第一个cpp文件&#xff0c;那么怎么做呢&#xff1f; 其实很简单&#xff0c;单击你不想让之运行的文件&#xff0c;点击最下面的属性 最后设置为这样…

数学建模day15-时间序列分析

时间序列也称动态序列&#xff0c;是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分&#xff0c;分别是描述过去、分析规律和预测未来&#xff0c;本讲将主要介绍时间序列分析中常用的三种模型&#xff1a;季节分解、指数平滑方法和AR…

最小花费-银行转账-图的最短路-超详细解析注释

最小花费-银行转账-图的最短路-超详细解析注释 【题目描述】 在n个人中&#xff0c;某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费&#xff0c;请问A最少需要多少钱使得转账后B收到100元。 …

【Linux】Ubuntu 解压 zip、z01、z02等压缩文件的方法,Linux如何解压分卷压缩的

zip分卷压缩&#xff0c;在windows上压缩来的&#xff0c;如何解压这种文件&#xff1a; -rw-rw-r-- 1 20401094656 Dec 10 20:06 FFHQ.z01 -rw-rw-r-- 1 20401094656 Dec 10 20:10 FFHQ.z02 -rw-rw-r-- 1 20401094656 Dec 10 23:22 FFHQ.z03 -rw-rw-r-- 1 20401094656 Dec 10…

机器人跟踪性能量化指标

衡量机械臂关节轨迹跟踪控制的性能可以通过以下几个方面来进行&#xff1a; 跟踪精度&#xff1a;这是衡量机械臂关节轨迹跟踪控制性能的最重要的指标。它反映了机械臂实际运动轨迹与期望运动轨迹之间的偏差。跟踪精度越高&#xff0c;说明机械臂的控制性能越好。运动范围&…

设计模式——1_2 组合(Composite)

君子和而不同&#xff0c;小人同而不和 ——《论语》 文章目录 定义图纸一个例子&#xff1a;折算产品的成本BomMessageBomTree 写在后面的碎碎念职责分离非树状的组合模式组合和迭代器姑妄言之 定义 将对象组合成树状结构以表示“部分-整体”的层次结构。组合模式使得用户对单…

Python数据结构——字符串

目录 一、字符串的不变性 二、字符串的常见方法介绍 三、字符串对象的join()和split()方法 一、字符串的不变性 1、属于不可变对象&#xff0c;不能通过索引操作来改变字符串对象本身 s I like Python s[7] p 要修改字符串&#xff0c;需要使用字符串的replace()方法&am…

Python基础知识:整理16 使用pyecharts实现动态柱状图

1 基础柱状图的构建 from pyecharts.charts import Barbar Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) bar.ad…