当前位置: 首页 > 后端技术 > Java

Java包、权限修饰符和final关键字

时间:2023-04-01 16:54:56 Java

第一章包1.1包包其实就是操作系统中的一个文件夹。包用于对管理技术进行分类。不同的技术类别放在不同的包下,方便管理和维护。IDEA项目中,构建包的操作如下:包名的命名规范:pathname.pathname.xxx.xxx//例如:com.iheima.oa包名一般是公司的倒序域名。例如黑马是www.iheima.com,包名可以定义为com.iheima.technicalname。包名必须以“.”连接。包名的每个路径名都必须是有效的标识符,不能是Java关键字。1.2引导包什么时候需要引导包?情况一:使用Java提供的非核心包中的类时情况二:使用自己编写的其他包中的类时,什么时候不需要导入包?情况一:使用Java核心包中的类时(java。假设demo1和demo2中有一个Student,如何使用?代码示例://就用全类名的形式。//全类名:packagename+classname//复制全类名的快捷键:选择类名crtl+shift+alt+c或者用鼠标点击copy,然后点击copyReferencecom.itheima.homework.demo1.Students1=newcom.iheima.homework.demo1.Student();com.iheima.homework.demo2.Students2=newcom.iheima.homework.demo2.Student();第二章权限修饰符2.1权限修饰符中有四种Java中的访问权限,当使用不同的访问权限修饰符时,修改后的内容会有不同的访问权限,我们之前了解过public和private。接下来,我们将研究protected和default修饰符。角色。public:公开,随处可见。protected:本类、本包以及其他包中的子类都可以访问。默认(无修饰符):这个类,这个包是可以访问的。注意:默认是留空,不是defaultprivate:private,当前类可以访问。public>protected>default>private2.2不同权限的访问能力publicprotecteddefault同类私有√√√√同包内类√√√不同包内子类√√不同包内无关类√可见,public有最大权限。private是最小的特权。写代码的时候,如果没有特殊考虑,建议这样使用权限:成员变量使用private,隐藏细节。构造函数使用public来促进对象的创建。成员方法使用public,方便调用方法。Tips:不带权限修饰符,为默认权限。第三章final关键字3.1概述学习了继承,我们知道子类可以在父类的基础上重写父类的内容,比如方法重写。如果有一种方法我不想让别人改写内容,我该怎么办?Java提供了final关键字,表示修改的内容是不可变的。final:不变的,最终的意思。可用于装饰类、方法和变量。类:修改后的类不能被继承。方法:装饰方法不能被覆盖。变量:修饰的变量只能赋值一次。3.2如何使用3.2.1修饰类final修饰类不能被继承。格式如下:finalclass类名{}code:finalclassFu{}//classZiextendsFu{}//错误,无法继承final类查询APIfoundpublicfinalclassString,publicfinalclassMath,publicfinalclassScanner等,我们学过的很多classes都是final修改的,目的是给我们使用,不让我们改动它的内容。3.2.2修饰方法Final修饰的方法不能被覆盖。格式如下:modifierfinal返回值类型方法名(参数列表){//方法体}code:classFu2{finalpublicvoidshow1(){System.out.println("Fu2show1");}publicvoidshow2(){System.out.println("Fu2show2");}}classZi2extendsFu2{//@Override//publicvoidshow1(){//System.out.println("Zi2show1");//}@Overridepublicvoidshow2(){System.out.println("Zi2show2");}}3.2.3修饰变量-局部变量局部变量-基本类型基本类型的局部变量,被final修饰后,只能赋值一次,不能再次改变。代码如下:publicclassFinalDemo1{publicstaticvoidmain(String[]args){//声明变量,使用final修饰finalinta;//第一个赋值a=10;//第二个赋值a=20;//报错,不可重赋值//声明变量,直接赋值,使用final修饰finalintb=10;//第二个赋值b=20;//报错,不可重赋值}}想了想,下面两种写法,哪种可以编译?写法一:finalintc=0;对于(inti=0;i<10;i++){c=i;System.out.println(c);}写法二:for(inti=0;i<10;i++){finalintc=i;System.out.println(c);}根据final的定义,写法1报错!写法2,为什么编译通过?因为每次循环都是一个新的变量c。这也是大家需要注意的。3.2.4修饰变量——成员变量成员变量涉及初始化问题。初始化方法包括显示初始化和构造函数初始化。只能选其中一项:显示初始化(定义成员变量时立即赋值)(常用);publicclassStudent{finalintnum=10;}构造函数初始化(在构造函数中赋值一次)(不常用,了解一下)。注意:在每个构造函数中赋值一次!公共课学生{finalintnum=10;最终整数num2;publicStudent(){this.num2=20;//this.num2=20;}publicStudent(Stringname){this.num2=20;//this.num2=20;}}final修饰的常量名一般都有书写规则,字母全部大写。