文章目录
- 前言
- 类名冲突
- 完整的类路径
- 创建包
- 导入类包
- 总结
前言
java语言中,包在整个管理过程中发挥了重要的作用。使用包,可以有效地管理繁多的类文件,解决了类名重复的问题。在类中应用包和权限修饰符,可以控制他人对类成员的方法的访问。
类名冲突
问题:重复创建相同的类,会导致调用类时,无法区分哪一个类
解决方法:将两个同名、但不同方法的类放置于不同的包中。避免调用类时,无法判断调用哪一个类。
举例:
java API 文档中
java sql 包 中有 Date类
java util 包 中有 Date类
两个Date类,同名,不同方法
调用Date类时,通过调用不同的包,来确定调用的是哪一个Date类
注:自己创建了与API相同类名的类,会覆盖API的类。通过修改类名,解决 此类名冲突 的问题
public class Demo{public static void main(String[] args){String a = “123”; //报错!!!} }class String{// 覆写了 API 中String类,API的String被覆盖 }
此代码中,main方法中的String 数据类型 无法使用,报错。String类被覆写。
解决方法:将代码中的 String类修改为 MyString (不论什么名,不和java API重名就行)
完整的类路径
完整类名:包名.类名
eg: java.lang.String 包名:java.lang 类名:String
调用java API 中的类
第一种方法:
1. import 关键字 导入对应 java API 中的类
2. new 关键字 实例化对象,调用其方法
import java.util.Date;
//导入指定的Date包,完整的类路径public Class Demo{public static void main(String[] args){Date date = new Date();//实例化Date对象,调用其类中的方法}
}
第二种方法:
直接用 java API 中的完整类名 new 关键字实例化 实现调用
使用场景:
通过第一种方法,同时导入 util 包中的 Date类 和 sql 包中的 Date 类,会报错,系统无法判断Date实例化后,实现哪一个功能。
解决方法: 通过 直接用java API中的完整类名 实例化 实现调用
public class Demo{public static void main(String[] args){java.util.Date date1 = new java.util.Date();java.sql.Date date2 = new java.sql.Date();// 通过 使用 完整类名 new 关键字 实例化对象,实现了调用 sql包 和 util包 中的两个Date类}
}
创建包
创建包的名称规范:
想表达为: com.java 包的命名为:java.com
如何调用其他包和本包中多个同名类中的方法?
情景:本包中有Action , Demo 类 package5包中也有Action类
在Demo类main方法中
实例化 Action
实例化 完整类路径 package5.Action
可实现在Demo类中,同时调用本包中Action类和 com.mingri包中Action 类的方法
package5包中的Action类
package package5;public class Action {public void action() {System.out.println("这里是 package5 包中的 action方法");}
}
本包中的Action类
public class Action {public void action() {System.out.println("这里是 本包 中的 action方法");}
}
本包中的Demo类
public class Demo {public static void main(String[] args) {Action a1 = new Action();a1.action();//调用本包中的 Action()方法package5.Action a2 = new package5.Action();a2.action();//调用 package5 包中的 Action()方法}
}
输出结果:
以上为调用其他包和本包中多个同名类中的方法 的 实操展示
导入类包
调用一个包中的类
import java.lang.Math
包的名称: java.lang
类的名称: Math
import 关键字导入静态属性
使用方法:import static 静态属性
没有导入静态属性
public class Demo{public static void main(String[] args){System.out.println();}
}
导入静态属性
import static java.lang.System.out; //Demo中的静态成员 out
public class Demo{public static void main(String[] args){out.println(); //和System.out.println(); 效果一样}
}
import java.util.*;
注:导包中的 * 表示调取 java API 中 util 包里的所有类,避免了重复使用 import 关键字导入的繁琐
eclipse快捷键:shift+ctrl+o 自动补全所有代码中需要导入的包
总结
以上就是”包的使用“的简单介绍。如果文章中有几处错误,或者未补充到的东西,欢迎在评论区中讨论,我会即使进行反馈的。