Package包机制基础和静态导入

(Java包的命名规范是全部使用小写字母)

标题一:创建类的对象

一.当想在“包1“中指定的“类1”’中创建同包下“类2”的对象时,我们可以直接创建“类2”的对象。
在这里插入图片描述
在这里插入图片描述

第一种方法:
当想在“包1“中指定的“类1”’中创建“包2”中的“类2”的对象时,我们需要先导入“包2”,才可创建“类2”的对象。
在这里插入图片描述
在这里插入图片描述

此时我们需要先导入“类2”所在的包,就可以创建相应的对象了,导入“包2”有两种方法。
在这里插入图片描述
两种导入方法也存在各有优势和不足:
1 “import 包名.类名;” ------- 的格式表示只可以导入此包下的这个指定的类。
2. “import 包名.*;” -------的格式表示只可以导入此包下的所有的类,但是用*会导致编译速度变慢 但运行速度不受影响

第二种方法:
在编写代码时,在类前指定类所在的包,此时不需要import导入。
在这里插入图片描述

标题二.导入类名相同问题。

当导入的包中包含相同的类名时,该如何创建出我们所需要的类的对象呢?
第一:
在这里插入图片描述
此时我们需要创建Date类的对象,但是导入的java.sql包和cx.xst.test1.test2包下同时拥有相同类名的类 Date。此时,如上图所示,当时我们导入java.sql包下所有类 和 cx.xst.test1.test2包下指定的Date类是,此时创建的对象为cx.xst.test1.test2包下的Date类对象,而不是java.mql包的。

第二:
当存在上述情况时,我们也可以在编写代码的过程中指定出所创建的类的对象到底属于哪里。
在这里插入图片描述
注意:当两个包下有同名的类名时,将两个包的全部类导入,则编译器仍然不可以识别到底导入哪个类。
在这里插入图片描述
在出现类名重复的问题时候,必须明确指定想导入类的位置(import 包名.类名)而不可以全部写成 import 包名.* 。
在这里插入图片描述

标题三:静态导入

当我们没有导入Math类的时候,想要得到圆周率(或其他)的时候,就要使用Math类的静态方法 例如Math.PI;

静态导入 的语法格式为import static 而不是单独的 import
静态导入后可以直接使用这个类中的静态属性和方法,而不需要使用 “类名.属性”的格式
在这里插入图片描述

当我们导入Math类的时候 便不需要再次写出"Math”。
在这里插入图片描述

System类也是如此。
在这里插入图片描述

现在,我们自定义一个类进行静态导入的测试
在这里插入图片描述
在Temp类中创建静态属性和静态方法。
在这里插入图片描述
静态导入这个Temp类中的内容,则可以直接使用这个类中的静态属性和静态方法,而不需要用“对象.方法”来调用。
注意:由于被protected访问修饰符修饰的属性和方法只能被本包和子类访问,所以在这里必须用public来修饰Temp类中的方法和属性才可以在不同包下Test01类中被访问。
在这里插入图片描述

另外。我们测试一下非静态的方法和属性 和 静态导入的关系。
在这里插入图片描述

在这里插入图片描述

所以,静态导入只可以直接调用这个类下静态的属性和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值