1. 包知识点一:
package mypack; //相当于是文件夹名字,包名小写
class PackageDemo0
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
/*
编译:
编译的时候, javac PackageDemo0.java是可以通过的,会在当前目录下创建一个
叫PackageDemo0.class 文件
运行:
1. 运行的时候,使用java PackageDemo0的时候,会发生错误: 找不到或无法加载主类 PackageDemo0
的错误,原因是文件路径不存在嘛
2. 运行的时候,使用java mypack.PackageDemo0的时候,会发生错误: 找不到或无法加载主类 mypack.PackageDemo0
的错误,原因是没有创建文件夹
正确的操作:
1. 编译:javac -d . PackageDemo0.java 这样就会自动在当前目录下创建mypack文件夹
2. 运行:java mypack.PackageDemo0
*/
2. 包知识点二:
//import mypack1.Dog;
/*
这里会调用Dog类,而Dog.java文件已经 编译成javac -d . Dog.java
*/
class PackageDemo
{
public static void main(String[] args)
{
// Dog dog = new Dog();
mypack1.Dog dog = new mypack1.Dog();
dog.eat();
System.out.println("Hello World!");
}
}
/*
问题一:使用Dog dog = new Dog();
PackageDemo.java:7: 错误: 无法访问Dog
Dog dog = new Dog();
^
错误的源文件: .\Dog.java
文件不包含类Dog
请删除该文件或确保该文件位于正确的源路径子目录中
1 个错误
正确的调用方法:mypack1.Dog dog = new mypack1.Dog(); 找到文件路径
问题二:而当Dog.java文件已经 编译成javac -d c:\myclass Dog.java时候,我们再运行java PackageDemo时候
PackageDemo.java:12: 错误: 程序包mypack1不存在
mypack1.Dog dog = new mypack1.Dog();
^
PackageDemo.java:12: 错误: 程序包mypack1不存在
mypack1.Dog dog = new mypack1.Dog();
正确的调用方法:设置环境变量 set classpath=c:\myclass
问题三:而当Dog.java文件已经 编译成javac -d c:\myclass Dog.java时候
编译主函数:javac PackageDemo.java,然后运行:java PackageDemo
就会出现错误: 找不到或无法加载主类 PackageDemo 错误,说明运行时找不到Dog.class文件
解决办法: javac -d c:\myclass PackageDemo.java 使PackageDemo.class文件和mypack文件夹路径相同
*/
3. 包知识点三:
Animal.java
package mypackanimal;
public interface Animal
{
public void eat();
}
/*
javac -d c:\myclass Animal.java
Dog1.java:3: 错误: Animal在mypackanimal中不是公共的; 无法从外部程序包中对其进行
访问
解决方法: 加public
*/
Dog1.java
package mypack1;
public class Dog1 implements mypackanimal.Animal
{
public void eat()
{
System.out.println("eat bones !!");
}
}
/*
javac -d c:\myclass Dog1.java
3,权限在不同地方的体现:
public protected default private
同一类中: ok ok ok ok
同一包中: ok ok ok
子类中: ok ok
不同包中: ok
*/
PackageDemo1.java
class PackageDemo1
{
public static void main(String[] args)
{
// Dog dog = new Dog();
mypack1.Dog1 dog = new mypack1.Dog1();
dog.eat();
System.out.println("Hello World!");
}
}
/*
javac -d c:\myclass PackageDemo1.java
java PackageDemo1
*/
4. 包知识点四:
import mypack1.Dog2;
class PackageDemo2
{
public static void main(String[] args)
{
Dog2 dog = new Dog2();
// mypack1.Dog1 dog = new mypack1.Dog1();
dog.eat();
System.out.println("Hello World!");
}
}
/*
1. 必须要导入 包.类
2. 还可以使用 mypack1.*; 但是不建议这样做,
导包原则:用到哪个类,就导入哪个类
3. 高级编辑器会自动智能导入,不用手动全部操作,只需要一个快捷键
*/
package jarpack;
class JarDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
/*
Jar:java压缩包
1. javac -d . JarDemo.java //创建jarpack包;
2. jar -cf hululu.jar jarpack //创建jar包
3. set classpath=./hululu.jar //设置环境变量为jar包目录
4. java jarpack.JarDemo //运行
*/