包的应用

package pack;

class PackageDemo{
	public static void main(String[] args){
		packa.Packa a = new packa.Packa();
		a.show();
		a.method();
	}
}

/*
PackageDemo.java:5: 错误: 找不到符号
                Packa a = new Packa();
                ^
  符号:   类 Packa
  位置: 类 PackageDemo
PackageDemo.java:5: 错误: 找不到符号
                Packa a = new Packa();
                              ^
  符号:   类 Packa
  位置: 类 PackageDemo
2 个错误

错误原因:类名写错
因为类名的全名是:包名.类名
________________________________________
PackageDemo.java:5: 错误: 找不到符号
                pack.Packa a = new pack.Packa();
                    ^
  符号:   类 Packa
  位置: 程序包 packa
PackageDemo.java:5: 错误: 找不到符号
                pack.Packa a = new pack.Packa();
                                       ^
  符号:   类 Packa
  位置: 程序包 packa
2 个错误

错误原因:packa包不在当前目录下
需要设置classpath告诉jvm去哪里找指定的packa包
————————————————————————————————————————————————
PackageDemo.java:5: 错误: Packa在packa中不是公共的; 无法从外部程序包中对其进行访
问
                packa.Packa a = new packa.Packa();
                     ^
PackageDemo.java:5: 错误: Packa在packa中不是公共的; 无法从外部程序包中对其进行访
问
                packa.Packa a = new packa.Packa();
                                         ^
2 个错误

错误原因:有了包,范围变大,一个包中的类要被访问,必须有
足够大的权限。被访问的类的修饰符加上public
________________________________________________
PackageDemo.java:6: 错误: show()在Packa中不是公共的; 无法从外部程序包中对其进行
访问
                a.show();
                 ^
1 个错误

错误原因:类公有后,被访问的成员也要公有才可以被访问。

总结:
包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰
不同包中的子类还可以直接访问父类中被protected权限修饰的成员
包与包之间可以使用的权限只有两种:public和protected

            public protected default private
同一个类中    ok      ok       ok      ok
同一个包中    ok      ok       ok          
子类		  Ok      ok
不同包中      ok

*/

package packa;

public class Packa extends packb.Packb{
	public void show(){
		System.out.println("A hello");
		
	}
}

/*
G:\javaTest>javac -d . \myclass Packa.java
javac: 无效的标记: \myclass
用法: javac <options> <source files>
-help 用于列出可能的选项

G:\javaTest>javac -d .\myclass Packa.java


G:\javaTest>java pack.PackageDemo
A hello

类名为公有,其类名必须与文件名一致。
一个文件中不可以出现两个或以上公有的类或接口。

为了简化类名的书写,使用import,import导入的是包中的类
建议不要写通配符*,需要用到包中的哪个类就导入哪个类

建立包名不要重复,可以使用url来定义,url是唯一的

www.itcast.cn

package cn.itcast.demo
package cn.itcast.test

*/

package packb;

public class Packb{
	protected void method(){
		System.out.println("haha");
	}
}

猜你喜欢

转载自317324406.iteye.com/blog/2247707