Java中的包就是对class做出的修饰,它规定了class所在的路径。因为class会有名称相同的情况出现,但是当我们创建一个新包(package)则相当于规定了class类的空间位置,这样就不会出现在类调用(创建对象)过程中的歧义,达到想要的效果。
类的全称应该是:包名.类名。在使用包的过程中要注意一下几点:
1、package语句中的类必须是一个可执行的代码。
2、如果不创建包则默认为默认包。
3、当声明类时不使用public、protected和private修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类的成员变量或成员方法。
4、如果一个类有了包,想要调用它就不能分隔它的包名。
5、调用有包的类有两种方法:一是:import +完整包名。二是:new对象的时候加上完整的类名。
6、包名全部由小写字母(多个单词也全部小写);
7、.如果包名包含多个层次,每个层次应该用“.”分割;
8、自定义包不能java开头;
9、如果要在另一包中继承一个类,则被继承的类必须有public 修饰。
包的访问权限
default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问。(一般省略这种)
private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护访问权限”。被其修饰的属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包访问。
包的作用:
1.有利于类的查找与管理。一个软件由很多类构成,这些类按其功能可分为vo类、dao类、工具类、service类、controller类等,将这些类按其功能分门别类地放在不同包中有利于类的查找与管理;
2.解决了同名类命名冲突;
3.有利于保护类中的成员变量及其方法。类中成员变量及其方法前面的访问控制符决定了该变量和方法的使用范围;
JDK中的包
java.lang:提供利用 Java 编程语言进行程序设计的基础类,例如:String、Math、Integer、System和Thread等。
java.util:java工具类,包含对集合的操作、事件模型、日期和时间设施、国际化和各种实用工具类。
java.io:通过数据流、序列化和文件系统提供系统输入和输出。
java.net:为实现网络应用程序提供类。
java.awt:包含用于创建用户界面和绘制图形图像的所有类。
Java.sql:包含对数据的操作类。
fianl的三种用法
1、修饰变量==创建常量 ,后期无法修改。
eg: public static final int b=1;(声明常量的时候往往会加static ,加载类的时候就会被创建,以后再也不会分配内存了,不加static 则每一对象都有一个常量)
2、修饰类 :阻止类被继承(绝育类)。
3、 final 修饰方法则方法不能重写。(可以继承类,但不允许重写某个方法)
接口
接口就是一种规范。
在Java中取消了多继承,但是多继承在某些情况下是有用的。接口与抽象类、父类的作用是一样的,就是为了给子类定规范。接口在实际开发过程中是为了隔离“依赖”的。(这里的依赖指的是在一个类中创建另一个类的对象,与以前说的依赖不一样)
接口就是在程序设计过程中当引用用的,接口中只定义了方法的名称,参数和返回类型,不写方法的实现。实现由被调用的class去实现。(注意被调用的class要实现接口类中的所有声明的方法!)
package Inc;
public class Test {
public static void main(String[] args){
功能 a=null;//接口当引用用
a.吃();
a.喝();
}
}
虽然方法实现的类没有完成,没法测试,但至少可以编译通过。当方法实现的类写好后,只需要改一行代码就行。:功能 a=new person();将对象创建出来。这样就能达到节省时间的目的。接口与抽象类一样,是不能被new出来的。但规范的引用可以指向实现的实例。通过定义不同的接口可以实现不同的功能。这样一个类可以实现多个规范,与多个人协同。