包、final、权限修饰符、代码块讲解

发布时间:2026/9/1 15:42:34
包、final、权限修饰符、代码块讲解 本次讲包、final、权限修饰符、代码块。1.包包就是文件夹。用来管理各种不同功能的Java类方便后期代码维护。包名的规则公司域名反写包的作用需要全部英文小写见名知意。比如说包名是com.itheima.domain。在代码中就是最上边的packagepackage com.itheima.domain在使用其他类时需要使用全名如下public class Test { public static void main(String[] args) { com.itheima.domain.Student s new com.itheima.domain.Student(); } }但是如果我们一直这么写代码的话会很麻烦所以我们如果用导包的话很好用import com.itheima.domain.Student; public class Test { public static void main(String[] args) { Student s new Student(); } }这样就很简单了只需要写一个Student了。使用其他类的规则使用同一个包中的类时不需要导包。使用Java.long包中的类时不需要导包。Java.long包是Java的核心包所以不需要其他情况都需要导包。如果同时使用两个包中的同名类。我们如果打开字符串String这个类就会发现他是定义在Java.long包所以是不需要导包的直接就可以使用 。看这个当我们的Test和Teacher在两个不同的包里边我们在Test里边去用domain包的Teacher就会发现红色报错是因为此时Java不知道这个Teacher是从哪来的所以需要在前边导包需要写上 import com.itheima.domain.Teacher这样才可以使用Teacher tnew Teacher();看这段代码当在一个项目中两个包都有相同的Teacher类当在另一个test中引用的时候其中一个可以导包另一个的话只能使用之前的同名类写一大堆上去。finalfinal的意思是最终的不可被改变的那么final都可以修饰什 么呢final可以修饰方法、类、变量这三个修饰方法则代表该方法是最终方法不能被重写修饰类则代表该类是最终类不能被继承修饰变量则代表这个变量改名为常量只能被赋值一次。我们看这段代码这就是代表用final修饰的方法不能被重写。当我们点开String类的时候就会发现他也是用final修饰的因为字符串这个类中的任何方法是不需要被重写的所以就直接把整个类final一下这样就代表String就是最终类了不能再继续写新的子类了。这是最简单的final修饰变量的代码final修饰变量分为两种final修饰的变量如果是基本类型那么变量存储的数据值不能发生改变。final修饰的变量如果是引用类型那么变量存储的地址值不能发生改变对象内部的可以改变。3.权限修饰符是用来控制一个成员能够被访问的范围的可以修饰成员变量、方法、构造方法、内部类。分类有四种作用范围由小到大private空着不写protectedpublic具体的作用范围如下图所示private权限修饰符已经在之前讲过了这所以本次直接从空着开始当在Animal类中写的name变量在本类中可以正常使用在下边同一个包中的Test类中也可以用name这个变量。当变量name被protected修饰的时候即使在不同的包中也可以使用代码块代码块主要分为三部分局部代码块、构造代码块、静态代码块。局部代码块的作用提前结束变量的生命周期已淘汰构造代码块的作用抽取构造方法中的重复代码不够灵活静态代码块的作用数据初始化重点主要学习静态代码块静态代码块是特点是需要通过static关键字修饰随着类的加载和加载并且自动触发一次只执行一次package com.itheima.codeblockdemo2; public class Student { private String name; private int age; static { System.out.println(静态代码块执行了); } public Student() { System.out.println(空参构造); } public Student(String name, int age) { System.out.println(有参构造); this.name name; this.age age; } public String getName() { return name; } public void setName(String name) { this.name name; } public int getAge() { return age; } public void setAge(int age) { this.age age; } }