夹字是什么结构(夹是独体字还是上下结构)

使用任何语言进行编程都有一个相同的问题,就是命名冲突。

Java课程300集——java零基础,小白自学,Java看得懂,学的会,学完可就业。_哔哩哔哩_bilibili

程序一般不全是一个人写的,会调用系统提供的代码、第三方库中的代码、项目中其他人写的代码等,不同的人就不同的目的可能定义同样的类名/接口名,Java中解决这个问题的主要方法就是包。

即使代码都是一个人写的,将多个关系不太大的类和接口都放在一起,也不便于理解和维护,Java中组织类和接口的方式也是包。

包是一个比较容易理解的概念,类似于计算机中的文件夹,正如我们在计算机中管理文件,文件放在文件夹中一样,类和接口放在包中,为便于组织,文件夹一般是一个层次结构,包也类似。

包有包名,这个名称以点号(.)分隔表示层次结构。比如,我们之前常用的String类就位于包java.lang下,其中java是上层包名,lang是下层包名。带完整包名的类名称为其完全限定名,

比如String类的完全限定名为java.lang.String。Java API中所有的类和接口都位于包Java或javax下,Java是标准包,javax是扩展包。

接下来,我们讨论包的细节,包括包的声明、使用和包范围可见性。

1.声明类所在的包

我们之前定义类的时候没有定义其所在的包,默认情况下,类位于默认包下,使用默认包是不建议的,我们使用默认包只是简单起见。

定义类的时候,应该先使用关键字package声明其包名,如下所示:

package shuo.laoma;

public class Hello {

//类的定义

}

以上声明类Hello的包名为shuo.laoma,包声明语句应该位于源代码的最前面,前面不能有注释外的其他语句。

包名和文件目录结构必须匹配,如果源文件的根目录为E:\src\,则上面的Hello类对应的文件Hello.java,其全路径就应该是E:\src\shuo\laoma\Hello.java。如果不匹配,Java会提示编译错误。

为避免命名冲突,Java中命名包名的一个惯例是使用域名作为前缀,因为域名是唯一的,一般按照域名的反序来定义包名,比如,域名是apache.org,包名就以org.apache开头。

没有域名的也没关系,使用一个其他代码不太会用的包名即可,比如本节使用的shuo.laoma。如果代码需要公开给其他人用,最好有一个域名以确保唯一性,如果只是内部使用,则确保内部没有其他代码使用该包名即可。

除了避免命名冲突,包也是一种方便组织代码的机制。一般而言,同一个项目下的所有代码都有一个相同的包前缀,这个前缀是唯一的,不会与其他代码重名,在项目内部,根据不同目的再细分为子包,子包可能又会分为下一级子包,形成层次结构,内部实现一般位于比较底层的包。

包可以方便模块化开发,不同功能可以位于不同包内,不同开发人员负责不同的包。包也可以方便封装,供外部使用的类可以放在包的上层,而内部的实现细节则可以放在比较底层的子包内。

2.通过包使用类

同一个包下的类之间互相引用是不需要包名的,可以直接使用。但如果类不在同一个包内,则必须要知道其所在的包。使用有两种方式:一种是通过类的完全限定名;另外一种是将用到的类引入当前类。只有一个例外,java.lang包下的类可以直接使用,不需要引入,也不需要使用完全限定名,比如String类、System类,其他包内的类则不行。

看个例子,使用Arrays类中的sort方法,通过完全限定名可以这样使用:

int[] arr = new int[]{1,4,2,3};

java.util.Arrays.sort(arr);

System.out.println(java.util.Arrays.toString(arr));

显然,这样比较烦琐,另外一种就是将该类引入当前类。引入的关键字是import,import需要放在package定义之后,类定义之前,如下所示:

package shuo.laoma;

import java.util.Arrays;

public class Hello {

public static void main(String[] args) {

int[] arr = new int[]{1,4,2,3};

Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

}

}

做import操作时,可以一次将某个包下的所有类引入,语法是使用.*,比如,将java.util包下的所有类引入,语法是:import java.util.*。需要注意的是,这个引入不能递归,它只会引入java.util包下的直接类,而不会引入java.util下嵌套包内的类,比如,不会引入包java.util.zip下面的类。试图嵌套引入的形式也是无效的,如import java.util.*.*。

在一个类内,对其他类的引用必须是唯一确定的,不能有重名的类,如果有,则通过import只能引入其中的一个类,其他同名的类则必须要使用完全限定名。

引入类是一个比较烦琐的工作,不过,大多数Java开发环境都提供工具自动做这件事。比如,在Eclipse中,通过执行Source→Organize Imports命令或按对应的快捷键Ctrl+Shift+O就可以自动管理引用的类。

有一种特殊类型的导入,称为静态导入,它有一个static关键字,可以直接导入类的公开静态方法和成员。看个例子:

import static java.lang.System.out; //导入静态变量out

public class Hello {

public static void main(String[] args) {

int[] arr = new int[]{1,4,2,3};

sort(arr); //可以直接使用Arrays中的sort方法

out.println(Arrays.toString(arr)); //可以直接使用out变量

}

}

静态导入不应过度使用,否则难以区分访问的是哪个类的代码。

3.包范围可见性

前面章节我们介绍过,对于类、变量和方法,都可以有一个可见性修饰符public/private,我们还提到,可以不写修饰符。如果什么修饰符都不写,它的可见性范围就是同一个包内,同一个包内的其他类可以访问,而其他包内的类则不可以访问。

需要说明的是,同一个包指的是同一个直接包,子包下的类并不能访问。比如,类shuo.laoma.Hello和shuo.laoma.inner.Test,其所在的包shuo.laoma和shuo.laoma.inner是两个完全独立的包,并没有逻辑上的联系,Hello类和Test类不能互相访问对方的包可见性方法和属性。

除了public和private修饰符,还有一个与继承有关的修饰符protected。关于protected的细节我们下章介绍,这里需要说明的是,protected可见性包括包可见性,

也就是说,声明为protected不仅表明子类可以访问,还表明同一个包内的其他类可以访问,即使这些类不是子类也可以。

总结来说,可见性范围从小到大是:private<默认(包)<protected<public。

本文所有内容来自互联网,如有侵权/不实内容请联系我们删除,联系邮箱postusb@foxmail.com

发布者:缘分,转转请注明出处:https://www.bjxdyg.com/life/218829.html

(0)
缘分缘分
上一篇 2023年 5月 20日 下午10:02
下一篇 2023年 5月 20日 下午10:16

相关推荐

  • 边亚军北京真实人物原型(边亚军北京真实人物原型是谁)

    大家好,近期很多朋友对于边亚军北京真实人物原型产不是很理解。然后还有一些网友想弄清楚边亚军北京真实人物原型是谁,泰缘号(www.bjxdyg.com)已经为你找到了相关问题的答案,接下来和我们一起看看吧,希望对大家有所帮助! 今天,嘿科技(微信ID:leitech)要介绍的是一款号称“世界上最省油的汽车”。 据说其一升汽油便可跑3300公里,假如汽油价格按6…

    趣味生活 2022年 12月 15日
    1.2K00
  • 一如既往的拼音(一如既往的意思)

    第一课 社戏(鲁迅) 1.生字词注音 钳(qián) 撮(cuō) 偏僻(pì) 行辈(háng) 照例(zhào) 欺侮( wǔ ) 宽慰(wèi) 嘱咐(zhǔ) 怠慢(dài) 礼数(lǐ ) 撺掇(cuānduo)凫水( fú ) 潺潺(chán) 踊跃(yǒng)屹立(yì) 家眷(juàn) 皎洁(jiǎo ) 好歹(dǎi ) 归省(xǐng)…

    2023年 3月 10日
    17700
  • pcdm10是oppo什么型号(oppo pclm10是什么型号的手机)

    前不久,OPPO在上海推出了旗下今年首款Reno系列旗舰机型产品,其中包括了标准版的OPPO Reno和OPPO Reno 10倍变焦版,这一消息受到众多数码爱好者的广泛关注。日前,我们在工信部网站发现OPPO旗下又有一款型号为PCDT10的中端机型通过认证。 这款机型采用了现下流行的水滴屏设计,音量按键和电源键分别位于手机左侧与右侧,背面设计风格与OPPO…

    2023年 3月 4日
    24400
  • 虢国夫人怎么读(杨玉环姐姐虢国夫人怎么读)

    最近,许多网友对虢国夫人怎么读产生疑问。当然也有一部分网友想弄明白关于杨玉环姐姐虢国夫人怎么读,泰缘号(www.bjxdyg.com)已经为你找到了相关问题的答案,接下来和我们一起看看吧,让我们一起来探索一下,希望对大家有所帮助! 被人读错名字,伤自尊! 读错别人的名字,很尴尬! 然而,你有没有考虑过? 地名也是有尊严的! TA们,也不想被读错! 我们为大家…

    趣味生活 2022年 10月 9日
    33600
  • 小米防误触模式在哪里(小米防误触模式在哪里miui13)

    米粉3年前反映的问题终于得到重视,小米将为MIUI增加口袋防误触功能 鉴于众多米粉反映这一代的MIUI 12.5用户体验下滑,因此前段时间小米成立了MIUI先锋小组,由MIUI负责人金凡领导,集中解决用户反馈的各种问题,包括发热、Bug、稳定性等。很是解决了一些米粉反映的问题。 日前有不少小米手机用户在小米官方论坛发帖建议官方增加口袋防误触功能。对此小米在整…

    2023年 7月 18日
    17000

联系邮箱

postusb@foxmail.com

邮箱咨询: QQ交谈

邮箱:postusb@foxmail.com

工作时间:周一至周五,9:30-18:30,节假日休息