Java基础知识(十三)包和包的常见报错处理

本文深入解析Java中包的概念,包括其作用、命名规范、如何创建及使用,以及跨包访问和权限控制。同时,介绍如何通过import语句简化类名书写,并探讨包在组织代码中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包:

1、相当于文件夹,用于给文件进行分类管理。

2、给类提供多层命名空间。s文件夹下的文件1,还是r文件夹下的文件1。

3、package 包名(所有字母小写),语句放在代码第一行。注意:有了包之后类名就变成了包名.类名,而不是原来的类名了。

这个错误是因为类名前忘记加了包名。 

这个错是因为文件夹下没有这个包,应该把这个类文件放在名为pack的文件夹下。

 

如何自动生成包文件夹呢?

-d  指定包所存在的位置(目录),  .  代表当前目录,就不必再抄一遍了。

正常开发时必须写 类的全名称,先写包再写类。 【包名.类名】    因为你写项目的时候必须要写名是哪组中的类

当然,不指定当前目录也行,

包的出现可以让类文件(运行文件)和原文件相分离。所以,今后再写文件时把class文件和原文件分开存放,利于整理。

但是运行的时候要转到那个目录下,目录写到包的父文件即可。

不同包中的类如何相互访问呢?先来看两篇代码。

代码1:

package first;  //包名必须都是小写

class CrossT
{
    public static void main(String[] args)
    {
        second.DemoT d = new second.DemoT();  //类名必须是带着包名的全名。 
        d.show();
    }
}

代码2: 

package second;

public class DemoT  //这里必须是public 才能被其它类调用,有public还要保证文件名与类名一致
{
    public void show()  //这里必须是public 
    {
        System.out.println(" I believe you,my lover "+(char)1);
    }
}

 这里代码1和代码2都在一个文件夹下,它们运行后的class文件也都在另一个文件夹下,代码1调用代码2.

如果建立对象时没有写全类名会报这样的错:

由于分开存放了class文件与原文件,测试运行时需要先设置一下环境变量,如果忘记设环境变量了,会报下面的错:

再假如你忘了在被调用的类前边加public 会报下面的错:

除了被调用 的类前要加public ,被访问的成员也必须公有才可以被访问,否则报这样错:

 

另外,加了public后的类名和原文件名必须保持一致,否则会报这个错:

这里我文件名是【测试配合.java】而类的名字是【DemoT】所以它让声明DemoT.java

同时,这也决定了一个文件中只能有一个公有类或者接口,不然类名和谁一致??如果真想在一个包里有两个公有类,在包里再建一个文件即可。

如果以上问题都解决了,就可以运行啦,但是,运行时如果没有写全包名,还会有最后一个错等着你:

改正为【包名.类名】即可。效果如下:

另外,跨包之间也可以继承。比如下面这段代码 就可以和以上两篇代码相结合:

package third;

public class DemoT2
{
    public void put()
    {
        System.out.println("you are handsome man,my attractive boy~~"+(char)2);

    }
}

代码2改成:

package second;

public class DemoT extends third.DemoT2
{
    public void show()
    {
        System.out.println(" I believe you,my lover "+(char)1);
        put();
    }
}

运行结果是:

 跨包间继承多时,涉及到protected  修饰符的问题,被它修饰的方法,除非是这个方法所在类的子类可以调用,其它不可以。

总结:

1、包与包之间进行访问,被访问包中 的类及成员,需要public 修饰。

2、不同包中的子类可以直接访问父类中被protected权限修饰的成员。

3、包与包之间可使用的权限只有两种:public和protected 

4、权限范围:

注意:默认权限的方法子类继承完是不能用的。

5、包里还可以有包,和文件夹一个道理。下面这样是允许的。

为了简化类名的书写,使用Import关键字导入包中的类。

这里注意是导入 【包中的类】而不是文件夹,上图中haha就是个文件夹,不会被导入。

这里不建议用通配符,开发时用哪个导哪个。

定义包名不要重复,可以用url定义,保证包的唯一性, 

重点来了, 敲黑板!

Jar包

 

另有dos操作也可以实现把一堆东西放到一个文件夹中方便查阅,即【数据重定向】,把数据在另一个地方展示。

只要把jar包放在classpath下就可以使用写好的封装工具。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纸城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值