黑马程序员——包

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Java包的概念编辑本段

   为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,例如,所有关于交通工具的类都可以放到名为Transportation的包中。
程序员可以使用package指明源文件中的类属于哪个具体的包。包语句的格式为:
package pkg1[.pkg2[.pkg3…]];
程序中如果有package语句,该语句一定是源文件中的第一条可执行语句,它的前面只能有注释或空行。另外,一个文件中最多只能有一条package语句。
包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。通常包名中全部用小写字母,这与类名以大写字母开头,且各字的首字母亦大写的命名约定有所不同。
当使用包说明时,程序中无需再引用(import)同一个包或该包的任何元素。import语句只用来将其他包中的类引入当前名字空间中。而当前包总是处于当前名字空间中。
如果文件声明如下:
package java.awt.image
则此文件必须存放在Windows的java\awt\image目录下或unix的java/awt/image目录下。

编译时:javac -d . PackageDemo.java   在当前目录建立文件夹并编译


1,对类文件进行分类管理。
2,给类提供多层命名空间。
3,写在程序文件的第一行。
4,类名的全程是  包名.类名。
5,包也是一种封装形式。

为了简化雷曼那个的书写,使用一个关键字,import.
import 导入的是包中的类。
建议,不要写通配符*,需要用到包中的哪个类就导入哪个类。

建议定义包名不要重复,可以使用url来完成定义,url是唯一的。


www.itcast.cn
package cn.itcast.demo
package cn.itcast.test
import  packb.haha.hehe.heihei.*;

package packa.*;

class  PackageDemo
{
	public static void main(String[] args) 
	{
		DemoC c = new Demo();
		//packb.haha.hehe.heihei.DemoC c = new packb.haha.hehe.heihei.DemoC();
		//packa.DemoA d = new packa.DemoA();
		//d.show();
	}
}

package packa;

public class DemoA 
{
	public void show()
	{
		System.out.println("DemoA show run");
	}
}



PackageDemo.java:8: 找不到符号
符号:类 DemoA
位置:类 pack.PackageDemo
DemoA d = new DemoA();
^
PackageDemo.java:8:找不到符号
符号:类 DemoA
位置:类 pack.PackageDemo
DemoA d= new DemoA();
^
2 错误


错误原因:类名写错。

因为类名的全是是:包名.类名



 PackageDemo.java:8:packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进行
 访问
packa.DemoA d = new packa.DemoA();
^
 PackageDemo.java:8:packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进行
 访问
packa.DemoA d = new packa.DemoA();
^
2 错误


错误原因:有了包,范围变大,一个包中的类要被访问,必须要有足够大的权限。
所以被访问的类要被public 修饰。


PackageDemo.java:9:show() 在 packa.DemoA 中不是公共的;无法从外部软件包中对其进行
 访问
d.show();
1 错误

错误原因:类共有后,被访问的成员也要共有才可以被访问。


总结:

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

不同包中的的子类还可以直接访问父类中被protected(权限:保护)权限修饰的成员。

包与包之间可以使用的权限只有两种,public protected。

            public   protected  default  private
同一个类中  ok           ok  ok          ok
同一个包中  ok           ok             ok  
子类  ok           ok
不同包中     ok

PS:部分文字借鉴于好搜百科
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值