在开发系统中很多人参与的,避免同名,可用不同文件夹中可以保存同名文件。所谓的包实际就是一个文件夹
在工作之中,所有的类都一定要放在包之中(不存在没有包的类),每一个类的完整名称都是“包.类”。
定义包:
package cn.mldn.drmo;//定义包
public class Hello{
}
本程序与之前只是多了一个package;
javac -d . Hello.class;语法的意义如下:
“-d”:表示生成文件夹,而文件夹的名称就由package定义;
“.”:表示在当前所在的目录下保存生成的包“Hello.class”文件
那么在一个类编译完成之后执行的时候不要进入到包中执行,即“java cn.mldn.drmo Hello”
包的导入:
有了包的定义之后,实际就将一个完整的项目按照功能保存在不同的包之中。这些包中的类进行互相访问,那么此时使用impcet关键字使用所需数的包
范例:定义一个cn.mldn.drmo Info类:
pachage cn.mldn.drmo;
class Info{
public String getMsg(){
return "Hello World";}
}
范例:定义使用Info类
pachage cn.mldn.test;
import cn.mldn.util,Info;//导入类
class TestInfo{
public static void main(String args[]){
Info info=new Info();
System.out.println(info.getMsg());
}
}
总结:关于两种类声明的区别
public class 类名称:文件名称要与类名称保持一致,如果一个类需要被外包所访问那么必须使用public class;
class 类名称:文件名称可以与类名称不同,此个类只希望被本包所访问
范例:修改Info java类
pachage cn.mldn.drmo;
public class Info{
public String getMsg(){
return "Hello World";}
}
所以在很多的时候可以使用java的自动联编的方式:“javac -d.*.java”
那么此时可以使用通配符“*‘完成类的自动导入:
import cn.mlan.util *;//导入类
但是使用”*“并不意味着要导入一个包之中的全部类;java在执行的时候只会加载所需要的类,不需要的不加载。
可是也有可能出现这样一种情况,此时有两个Info类(cn.mldn.util,Info msg.Info),因为某种需求,需要在同一程序导入
范例:在TestInfo导入两个包
这两个包都存在有Info类
错误信息:对Info的引用不明确
所以要写完整名称,例如:
package cn.mldn.test;
import cn.mldn.util *;//导入类
import msg *;//导入类
public class TestInfo{
public static void main(String args[]){
cn.mldn.util.Info info=new cn.mldn.util.Info ();
System.out.println(info.getMsg());
}
}
jar命令
项目中的* class文件打成一个压缩文件格式发送给用户,那么这样的格式在java之中使用jar进行表示,而jar时JDK的一个命令
在jar命令之中有三个参数比较重要的;
”-c“:创建新文件;
”-f“:定义生成的jar文件的名称;
”-v“:将压缩的详细信息进行显示。
范例:现在有一个Info.java类
package cn.mldn.util;
public class Info{
public String getMsg(){
return "Hello wordl";
}
}
1.首先将Info.java类进行编译:javac -d .Info.java,一定会形成包类名称;
2.将生成的类进行打包操作:jar -cvf my jar cn,将cn目录下的内容打包成my.jar;
3.此时建立TestInfo.java类,而且my.jar保持在于TestInfo.java同级目录中
但是要想想让*.jar文件之中的类起作用,这必须配置CLASSPATH
SET CLASSPATH=.:d:\javademo\my.jar
但是通过SET编译只能够针对于当前窗口完成,也可以直接编辑CLASSPATH的坏境变量
系统常见包(理解)
几个常见的程序包(java的基础包)
java.lang:包含了一些基本的常用类,例如:String,Integer,Object
java.lang.reflect:反射机制操作包
java.util:java 工具包,里面包含了大量的系统类,例如:数据结构支持
java.util.regex:正则操作包
java.io:文件及数据传输编写
java.net:TCP,UDP程序编译
java.sql:数据库操作:
java applet:开发Applet(应用小程序)程序,不过已经不用了
java.awt java.swing:GUI开发包,进行图形界开发的
解释关于Applet和Application的区别?
java程序最早的时候时应用在网页上的技术,而当时主推的是Applet,那么Applet需要编写相应的网页程序,将*.class文件嵌套在页面之中才可以执行
而在之前一致所学习的属于Application程序,时利于主方法执行的
访问控制权限(重点)
对于访问控制权限在java之中一共分为四种:private,default,protected,public
范围 | private | default | protected | public |
1 同一包的同一类 | 可以 | 可以 | 可以 | 可以 |
2 同一包的不同类 | 不可以 | 可以 | 可以 | 可以 |
3 不同包的子类 | 不可以 | 不可以 | 可以 | 可以 |
4 不同包的不同类 | 不可以 | 不可以 | 不可以 | 可以 |
严格来讲封装应该有三种:private,default,protected
如果时定义属性用:private
如果是定义方法用:public
命名规范总结:
类名称:每一个单词的开头首字母大写,例如:TsetDemo
方法名称:第一个单词字母小写,而后每个单词首字母大写,例如:printInfo();
属性名称:第一个单词字母小写,而后每个单词首字母大写,例如,studetName;
包名称:所有字母小写,例如:cn.mldn.demo;
常量名称:所有字母大写,例如:INFO;
总结
只要是类就要放在包之中,package,import;
jar只需要知道就行了
四种权限要记住