20160724 包

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,与其无关
                                             
						以上这个包的调用






*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值