黑马程序员技术交流社区
标题:
包_03
[打印本页]
作者:
Tauruszzy
时间:
2015-5-11 13:47
标题:
包_03
代码PackageDemo.java
/*
PackageDemo代码
*/
package pack;
class PackageDemo
{
public static void main(String[] args)
{
packa.DemoA d=new packa.DemoA();//类名为:包名.类名
d.show();
}
}
复制代码
代码DemoA
package packa;
public class DemoA extends packb.DemoB
{
public void show()
{
System.out.println("我是DemoA------");
method();
}
}
复制代码
代码 DemoB.java
package packb;
public class DemoB
{
public void method()
{
System.out.println("我是DemoB!!!!!!!!!!!");
}
}
复制代码
dos行分别编译运行:
/*
e:\sourcefile>javac -d f:\myclass DemoB.java
e:\sourcefile>javac -d f:\myclass DemoA.java
e:\sourcefile>javac -d f:\myclass PackageDemo.java
e:\sourcefile>java pack.PackageDemo
我是DemoA------
我是DemoB!!!!!!!!!!!
*/
复制代码
然后,单独修改PackageDemo.java代码,单独建立DemoB的对象,并运行
/*
PackageDemo代码
*/
package pack;
class PackageDemo
{
public static void main(String[] args)
{
//packa.DemoA d=new packa.DemoA();//类名为:包名.类名
//d.show();
packb.DemoB b=new packb.DemoB();
b.method();
}
}
复制代码
运行结果:
e:\sourcefile>javac -d f:\myclass PackageDemo.java
e:\sourcefile>java pack.PackageDemo
我是DemoB!!!!!!!!!!!
复制代码
表明也可以!
那么问题来了,请看,当DemoB中方法的权限改为protected之后,PackageDemo.java编译后还能运行吗?
改变之后,先编译DemoB.java再编译PackageDemo.java,结果PackageDemo.java不能通过编译。
package packb;
public class DemoB
{
protected void method()
{
System.out.println("我是DemoB!!!!!!!!!!!");
}
}
复制代码
/*
PackageDemo代码
*/
package pack;
class PackageDemo
{
public static void main(String[] args)
{
//packa.DemoA d=new packa.DemoA();//类名为:包名.类名
//d.show();
packb.DemoB b=new packb.DemoB();
b.method();
}
}
复制代码
但是当PackageDemo.java调用DemoA时可以
/*
PackageDemo代码
*/
package pack;
class PackageDemo
{
public static void main(String[] args)
{
packa.DemoA d=new packa.DemoA();//类名为:包名.类名
d.show();
//packb.DemoB b=new packb.DemoB();
//b.method();
}
}
复制代码
编译通过,并能运行。
说明protected的作用。不同包中的子类可以直接访问父类中被protected修饰的成员。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2