说白了 就是大型企业类名众多 完事不能老重名啊
于是Java就发明了package 来解决这种问题,提供类的多重类命名空间。
Package语句做为源文件的第一个语句 声明这个类所在的包。万一缺省该语句 就是无名包(很灵活嘛)
他的格式是
Package pkg1[.pkg2[.pkg3...]];
Java 编译器把包对应于文件系统的目录管理 (这算是包的基本功能吧,小白理解),package语句中,用’’ 指明包(目录)的层次,例如下面语句
Package com.sxt;
则该文件中所有的类位于.\com\sxt目录下面
(哎呦喂 又是一个黑科技)
如果把一个类打包 则使用该类时 必须使用该类的全名
(例如 com.sxt.MyClass),JAVA编译器才会找到该类。
。也可使用import在文件的开头引入要使用到的类:例如:
Import com.sxt.MyClass;
Import java.util.*;//引入Java.util包中所有的类(看到这个util这个奇奇怪怪的名字 我是拒绝的 什么鬼)(好的 又可以出去撩妹了 小妹子都不懂这些)
MyClass myClass=new Myclass();//可以直接使用类名
(经常看到这种语句 用培训班行话说就是new出了一个什么玩意)
可以不需要用import 语句直接使用Java.lang中的包
(lang是language 的简写 ,是Java常用方法最多的包 包含常用类)
Package import 总结
如果想讲一个类 放到一个包内 ,源文件第一句话写package。
必须保证该类的class文件位于正确目录下
(说实话,不太理解,只理解字面意思 不理解其内涵)
该类的源码可能产生影响(为什么啊)
删除或转移到另外的目录
另外的类想访问的话
写全名
引入(咋引入)
*
具体类名
访问位于同一个包中的类不需要引入
执行一个类需要写全包名
必须class文件的最上层包的父目录位于classpath下
(claSSPATH 是编译器的一个环境变量。其作用与package import有关,。当你写下import java.util.*,编译器面对import关键字时 就知道你要引入java.util这个package里面的类了,但是编译器怎么样知道他在哪里呢?所以你首先应该告诉编译器这个包的位置 就是通过设置classpath来完成。)
J2SDK中主要的包简介
Java.lang --- 包含一些Java语言的核心类 如string math integer system thread,提供常用功能
Java.awt -------包括了构成窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
JAVA.applet-----包括applet运行所需的一些类
Java.net ---执行与网络相关的操作的类
Java.io------能提供多种输入、输出功能得类
Java .util----包括一些实用工具类,如定义系统特性 ,使用与日期日历相关的函数,
类的继承与权限控制
Java中使用extends关键字来实现类的继承机制,其语法规则为:
<modifier>class<name>[extends<superclass>]{......}
<modefier>class<name>[extends<superclass>]{......}
通过继承 子类自动拥有了基类(superclass)的所有成员 (成员变量和方法)
Java只允许单继承 不允许多继承。
一个子类只能有一个基类 ,一个基类可以派生出多个子类。
代码示例如下:
//继承中的权限控制
Class Parent{
private int n_private=1;
Int n_friendly=2;
protected int n_protected=3;
public int n_public=4;
}
class Child extends Parent{
public void f(){
n_private=10;
n_friendly=10;
n_protected=30;
n_public=40;
}
}
访问控制
Java权限修饰符public protected private 至于类的成员定义前 ,用于限定其他对象对该类对象成员的访问权限
对于class的权限修饰只可以用 public和default
Public类可以在任意地方呗访问
Default类只可以被同一个包内部的类访问
方法的重写
在子类中 可以根据需要从基类中级车的方法进行重写