3.final关键字
final 最终的
可以修饰的: 类 函数 属性
修饰类的属性就是常量,常量不可以改变(大部分情况都会搭配static关键字)
修饰类的成员变量 必须给与初始化赋值,如果没有初始化也要在 对象创建对象之前对其初始化赋值,否则使用则会编译错误
修饰的局部变量 常量
修饰类的函数 不可以被重写
修饰的类不可以被继承
4.java 包机制
package 包
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包的作用
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
细节
如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略
不同包下,需要导入才能使用
如果想使用一个包中的许多类时,这时不需要多条的导入语句,使用 “*”号通配符代表所有的类。
final-test3:
//修饰符 不论顺序,可是一般写法,public放在前面。其它修饰符放在后面。
public class Test3 {// final
// 3.final关键字 --- 也是修饰符
// final 最终的
// 可以修饰的:类 函数 属性
// final 修饰类型,不能被继承(公公)最终的,无后代
// 在返回值前面的都是修饰符,也是不论顺序
public final void aaa() {// 最终的方法
// 最终的方法不能被重写
final int i = 0;// 局部变量也能使用final修饰。局部变量不能加static修饰。
}
// 一般搭配static使用, static final叫做常量。
// 定义的时候需要初始化赋值,否则会报错
static final int i = 0;// 属性不能被修改
}
final-test4:
public final class Test4 {
public static void main(String[] args) {
Test3 test3 = new Test3();
System.out.println(test3.i);
// test3.i = 100;//会报错
System.out.println(test3.i);
}
package:
//Test4可以改为*。表示导入class2包下所有类,但是不建议这样做,按需导入。导包快捷键 ctrl+ shift+ o
import com.test.class2.Test4;//*代表通配符,一般来说,比较少用。
public class Test1 {
// 同一个包中类名字是不同的
// 不同包中的类名是可以相同的
public static void main(String[] args) {
// 以前的写法
Test1 test1 = new Test1();// 不写包名的&&不需要导包的,默认是同包
// 创建一个class1包中的Test1对象
// 在同一个类型中使用了一个同名不同包的类型,不同包的,需要使用包名来创建对象,或者impot导入对应包,对应类
com.test.class1.Test1 test12 = new com.test.class1.Test1();
// 导入了class包Test4的类
Test4 test4 = new Test4();
}
}