JAVA---包、关键字final

1. 包就是文件夹,用来管理各种不同功能的Java类,方便后期代码维护。

2. 在 Java 里,包是用来组织类和接口的一种机制。它能够防止命名冲突,并且按照功能或者模块

对代码进行分类。

包名的命名规则:公司域名反写+包的作用(全部英文小写,见名知意)

e.g.   com.chillingheart.domain

package com.chillingheart.domain;

public class Student{

      私有化成员变量
    
      构造方法

      成员方法

}

全类名:(包名+类名)

com.chilingheart.domain.Student

目录结构:

com/

      chillingheart/

                   domain/

                               Student.java


若要在一个 Java 类里使用其他包中的类,就需要使用 import 关键字来导入这些类。

import com.chilingheart.domain.Student

使用其他类的规则

1. 使用同一个包中的类时,不需要导包;

2. 使用 java.lang包中的类时,不需要导包;

3. 其他情况都需要导包;

4. 如果同时使用两个包中的同类名,需要用全类名。


静态导入

除了普通的导入,Java 还支持静态导入,这能让你直接使用其他类的静态成员,而无需使用类名

来限定。

// 静态导入 Math 类的所有静态成员
import static java.lang.Math.*;

public class StaticImportExample {
    public static void main(String[] args) {
        double result = sqrt(16);
        System.out.println("The square root of 16 is: " + result);
    }
}

在这个例子中,使用静态导入导入了 java.lang.Math 类的所有静态成员,所以可以直接使

用 sqrt 方法,而无需写成 Math.sqrt


通配符导入

若要导入一个包中的所有类,可以使用通配符 *

// 导入 java.util 包中的所有类
import java.util.*;

public class WildcardImportExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Hello");
        System.out.println(list);
    }
}

在这个例子中,使用通配符导入了 java.util 包中的所有类,所以可以直接使用 List 和 ArrayList 类。


包的访问权限

Java 中的包还涉及到访问权限的概念。类、方法和变量可以使用不同的访问修饰符(如 publicprotectedprivate 和默认)来控制其在包内和包外的访问权限。

  • public:可以在任何包中被访问。
  • protected:可以在同一个包内以及不同包的子类中被访问。
  • 默认(没有修饰符):只能在同一个包内被访问。
  • private:只能在同一个类中被访问。


final关键字

final  最终的  --->不可被改变的

1. 方法   表明方法是最终方法,不能被重写

2. 类   表名该类时最终类,不能被继承(不能有子类)

3. 变量   叫做常量只能被赋值一次

常量

实际开发中,常量一般作为系统的配置信息,方便维护,提高可读性。

常量的命名规范:

1. 单个单词:全部大写

2. 多个单词:全部大写,单词之间用下划线隔开


修饰方法

class ParentClass {
    public final void finalMethod() {
        System.out.println("This is a final method.");
    }
}

class ChildClass extends ParentClass {
    // 以下代码会报错,因为 finalMethod 是 final 方法,不能被重写
    // public void finalMethod() {
    //     System.out.println("Trying to override final method.");
    // }
}

在这个例子里,ParentClass 中的 finalMethod 被声明为 final,所以 ChildClass 不能对其进行

重写。


修饰类

final class FinalClass {
    public void display() {
        System.out.println("This is a final class.");
    }
}

// 以下代码会报错,因为 FinalClass 是 final 类,不能被继承
// class SubClass extends FinalClass {}

在上述示例中,FinalClass 被定义为 final 类,若尝试创建它的子类,编译器会报错。


修饰变量

修饰基本数据类型变量

final修饰的变量是基本类型时:那么变量存储的数据值不能发生改变。

class FinalVariableExample {
    public static void main(String[] args) {
        final int num = 10;
        // 以下代码会报错,因为 num 是 final 变量,不能被重新赋值
        // num = 20; 
        System.out.println("The value of num is: " + num);
    }
}

在上述代码中,num 被声明为 final 变量,赋值后若再尝试修改其值,编译器会报错。

修饰引用数据类型变量

final修饰的变量是引用类型时:变量存储的地址值不能发生改变,对象内部可以改变。

import java.util.ArrayList;
import java.util.List;

class FinalReferenceExample {
    public static void main(String[] args) {
        final List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        // 可以修改引用对象的内容
        System.out.println("List content: " + list);

        // 以下代码会报错,因为 list 是 final 变量,不能再指向其他对象
        // list = new ArrayList<>(); 
    }
}

对于引用数据类型的 final 变量,虽然不能让它指向另一个对象,但可以修改所引用对象的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值