protected:
被该修饰符修饰的方法只能由子类使用,其他类创建该类的对象也无法使用.
import:导入包中的类,不能导入包中的包.
目的: 为了简化类名书写
导包的原则:用到那个类,就导入那个类
package mypack;
import packA.*;//导入packA包中所有的类,不导入包中的包.
import packA.DemoA;//导入packA中的DemoA类
import packB.DemoB;
//导包的原则:用到那个类,就导入那个类
import //干嘛的用,为了简化类名书写
class PackageDemo// extends packA.DemoA
{
public static void main(String[] args)
{
DemoA a = new DemoA();
a.show();
DemoB b = new DemoB();
// b.method();
System.out.println("Hello package");
//show();
}
}
常见的错误:
错误一:
PackageDemo.java:7: 错误: 找不到符号
DemoA a = new DemoA();
^
符号: 类 DemoA
位置: 类 PackageDemo
PackageDemo.java:7: 错误: 找不到符号
DemoA a = new DemoA();
^
符号: 类 DemoA
位置: 类 PackageDemo
2 个错误
原因:类名写错.
因为DemoA类已经有包的所属了,所以必须要明确其包名,正确名称是 包名.类名 packA.DemoA
错误二
PS F:\myjava\package> javac -d. PackageDemo.java
PackageDemo.java:7: 错误: 程序包packA不存在
packA.DemoA a = new packA.DemoA();
^
PackageDemo.java:7: 错误: 程序包packA不存在
packA.DemoA a = new packA.DemoA();
^
2 个错误
原因是在当前目录下没找到,因为packA粗放在其他目录下.
应该配置一个classpath.
错误三:
PackageDemo.java:7: 错误: DemoA在packA中不是公共的; 无法从外部程序包中对其进行访问
packA.DemoA a = new packA.DemoA();
^
PackageDemo.java:7: 错误: DemoA在packA中不是公共的; 无法从外部程序包中对其进行访问
packA.DemoA a = new packA.DemoA();
^
2 个错误
解决:要把类名用public修饰
错误四:
PackageDemo.java:8: 错误: show()在DemoA中不是公共的; 无法从外部程序包中对其进行访问
a.show();
^
1 个错误
解决:要把要用的方法用public修饰
总结:
包与包之间的类进行访问时,被访问的包中的类必须是public的,被访问的包中的类的方法也必须是public的.
protected:被该修饰符修饰的方法只能由子类使用,其他类创建该类的对象也无法使用.
权限 public protected default private
同一类中 ok ok ok ok
同一包中 ok ok ok
子类中 ok ok
不同包中 ok