【从零开始学Java | 第十一篇】包、final、权限修饰符

发布时间:2026/7/14 7:50:38

【从零开始学Java | 第十一篇】包、final、权限修饰符 目录前言一、什么是包使用其他类的规则二、final关键字注意细节三、权限修饰符权限修饰符分类前言第十一篇的内容主要是介绍面向对象中的一些细节性的知识点内容比较杂。一、什么是包包就是文件夹用来管理各种不同功能的Java类方便后期代码的维护。如果说你把所有的类都定义到同一个包中随着项目文件越来越多之后在寻找特定的类时很难去找到你想要找的类因此我们要使用包来管理不同的类。包名的规则公司域名反写包的作用需要全部英文小写见名知意。例如com.alibaba.domain当你在自己创建的包中新建类时Idea会自动在首行生成当前所在的包。package com.sprneft.extendsdemo01; public class Dog extends Animal { public void bark(){ System.out.println(name 汪汪); } }使用其他类的规则使用其他类时需要使用全类名。public class Test{ public static void main(String[] args){ com.alibaba.domain.Dog d new com.alibaba.domain.Dog(); } }小明说“这样写太麻烦了吧有没有简洁一点的方式。”老师说“有的同学有的。”可以使用import关键字将本包外的类导入进来。import com.alibaba.domain.Dog; public class Test{ public static void main(String[] args){ Dog d new Dog(); } }具体的规则是这样的使用同一个包中的类时是不需要导包的使用java.lang包中的类时不需要导包比如String类其他情况都需要导包如果同时使用两个包中的同类名需要用到全类名。/*容易忽略要注意*/二、final关键字final是最终的、不可改变的意思。final只能修饰方法、类和变量。当final修饰方法时表明该方法是最终方法不能被重写。当final修饰类时表明类是最终类不能被继承。当final修饰变量时叫做常量只能被赋值一次。在我们实际开发当中使用final修饰方法和类是很罕见的比较常见的是使用final来修饰变量。具体用法如下public class Test{ public static void main(String[] args){ final int a 10; System.out.println(a);//会输出10 a 20;//a被final修饰会报错 } }注意细节实际开发中常量一般作为系统的配置信息方便维护提高可读性。常量的命名规范单个单词全部大写多个单词全部大写单词和单词之间使用下划线隔开细节final修饰的变量如果是基本数据类型那么变量中存储的数据值是不能发生改变的。final修饰的变量如果是引用数据类型那么变量中存储的地址值不能发生改变对象的内部属性值可以发生改变。三、权限修饰符权限修饰符用来控制一个成员能够被访问的范围的。可以修饰成员变量、方法、构造方法内部类。权限修饰符分类有四种权限修饰符作用范围由小到大为private缺省(默认不写)protectedpublic修饰符同一个类同一个包中其他类不同包下的子类不同包下的无关类private√缺省√√protected√√√public√√√√场景演示包familypackage com.family; // 注意包名 public class Father { private String diary 私密日记; // private String tv 客厅电视; // 缺省 (什么都不写) protected String recipe 祖传秘方; // protected public String blog 公开博客; // public public void testSelf() { // 在本类中自己看自己的东西全部合法✅ System.out.println(diary); System.out.println(tv); System.out.println(recipe); System.out.println(blog); } }package com.family; // 同样的包 public class Roommate { public void test() { Father f new Father(); // f.diary; // ❌ 报错私有属性室友看不了 System.out.println(f.tv); // ✅ 缺省属性同包可以看 System.out.println(f.recipe); // ✅ protected同包也可以看 System.out.println(f.blog); // ✅ public谁都能看 } }包outsiderpackage com.outsider; // 注意包名变了 import com.family.Father; public class Son extends Father { public void test() { // this.diary; // ❌ 报错日记是私有的儿子也看不了 // this.tv; // ❌ 报错不同包缺省的电视看不了了 System.out.println(this.recipe); // ✅ protected 发力了虽然不同包但是是子类可以看祖传秘方 System.out.println(this.blog); // ✅ public 随便看 } }package com.outsider; import com.family.Father; public class Stranger { public void test() { Father f new Father(); // f.diary; // ❌ // f.tv; // ❌ // f.recipe; // ❌ 陌生人看不了祖传秘方 System.out.println(f.blog); // ✅ 陌生人只能看公开的博客 } }

相关新闻