package com.vdata;
public class MyDemon //被访问的包中的类权限:必须是public-- 类中成员的权限:public或是protected(protceted是为其他包中的子类提供的一种权限例程)
//----
{
public void printTest()//这里不加public,会造成其在包内不是公共的 //此处也可以是protected,但目前情况下不能被PackageTest1调用,
// ------ //不加原先是默认权限(default) //如果,调用类PackageTest1也是com.vdata即可(相对应的java执行也更改为com.vdata)
{
System.out.println("我是汉克");
}
}
//protected起到的作用是在相同的包中,其他外面的包不能访问到他,起到一定的保护作用
//后面的项目中会用到
/*
包 package 就相当于文件夹
1.对类进行分类管理2.提供多层次的命名空间
3.包是一种封装的形式
4.定义包时是写在程序的第一行(注释除外)
5.有了包的概念之后,类的全名称:包名.类名
方式1:
1.通过javac编译生成class文件;
2.手动创建包,将编译好的class文件复制到包下;
3.然后执行java com.PackageTest
修改之后正常输出
缺点:文件很多,是不是需要一一去进行拷贝复制,管理成本很高
方式2:
在编译的时候自动创建包
javac -d 目录 类名
目录:可以是任意目录(一般为了管理,找对应的目录)(这里的任意和包里面是对应的)
.代表的是"当前目录"
java -d.类名
会自动生成包名,并且class文件也会自动生成到相应的包下
*/
package com;
class PackageTest
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
//out:错误: 找不到或无法加载主类 PackageTest
package com;
import com.vdata.MyDemon;//为新添加//用到谁,导谁就行了
//import com.vdata.*;//把这个包下所有的内容都导进去(实际不需要这样)
class PackageTest1
{
public static void main(String[] args)
{
//com.vdata.MyDemon demon=new com.vdata.MyDemon();//这里是全路径
//demon.printTest();
MyDemon demon=new MyDemon();//这里是全路径
demon.printTest();
}
}
/*
所会遇到的错误:
1.
PackageTest1.java:7: 错误: MyDemon在com.vdata中不是公共的; 无法从外部程序包中对其进行访问
com.vdata.MyDemon demon=new com.vdata.MyDemon();
^
PackageTest1.java:7: 错误: MyDemon在com.vdata中不是公共的; 无法从外部程序包中对其进行访问
com.vdata.MyDemon demon=new com.vdata.MyDemon();
解决方法:给MyDemon加入public修饰符
2.
PackageTest1.java:9: 错误: printTest()在MyDemon中不是公共的; 无法从外部程序包中对其进行访问
demon.printTest();
^
解决方法:给printTest加入public修饰符
错误3:
Exception in thread "main" java.lang.NoClassDefFoundError: PackageTest1
Caused by: java.lang.ClassNotFoundException: PackageTest1
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: PackageTest1. Program will exit.
解决方法:在执行PackageTest1加上包名,即java com.PackageTest1
---
主要是这个,视频和实际操作里只是加com. 调用的方法在com.或是com.vdata,与其无关
以上这个包的调用
*/