---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
前期我们说,包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
/*
在packb包中定义一个DemoB
*/
package packb;
public class DemoB
{
publicvoid method()
{
System.out.println("demoBmethod run");
}
}
/*
在packa包中定义一个DemoA的类并且继承packb.DemoB
*/
package packa;
public class DemoA extends packb.DemoB
{
publicvoid show()
{
System.out.println("demoashow run");
method();2013/12/10星期二
}
}
package pack;
class PackageDemo
{
publicstatic void main(String[] args)
{
packa.DemoAa = new packa.DemoA();
a.show();
}
}
现在我们在主函数中直接调用packb.DemoB里的方法:
package pack;
class PackageDemo
{
publicstatic void main(String[] args)
{
packb.DemoBb = new packb.DemoB();
d.method();
}
}
我们发现这样也可以直接调用packb.DemoB里的方法,继承与不继承都能得到packb.DemoB中的方法,那样继承就没有什么意义了,所以现在我们用protected(保护)修饰符修饰packb.DemoB中的方法,只让自己的子类得到自己的方法。
就变成了:
/*
在packb包中定义一个DemoB
*/
package packb;
public class DemoB
{
protectedvoid method()
{
System.out.println("demoBmethod run");
}
}
/*
在packa包中定义一个DemoA的类并且继承packb.DemoB
*/
package packa;
public class DemoA extends packb.DemoB
{
publicvoid show()
{
System.out.println("demoashow run");
method();2013/12/10星期二
}
}
package pack;
class PackageDemo
{
publicstatic void main(String[] args)
{
packa.DemoAa = new packa.DemoA();
a.show();
}
}
现在只有继承packb.DemoB的DemoA的类可以调用packb.DemoB中的method()
方法,而主函数不能再调用packb.DemoB中的method()方法。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------