`

java中包的访问

    博客分类:
  • Java
 
阅读更多

Java中有三种修饰符:public、protected、private。实际上还隐藏着一个缺省的包。

public:定义了类型的主要功能。

protected:定义了子类可获得的用于特化目的的功能。

private:定义仅仅此类的特定功能。

package(缺省):定义了包内其他代码可获得的用来实现包类型之间协作的功能。

 

例子:

package P1;
public abstract class AbstractBase {
	public AbstractBase() {
		System.out.println("\nCreate Object : " + getClass());
	}
	private 	void pri() {System.out.println("AbstractBase.pri()");}
				void pac() {System.out.println("AbstractBase.pac()");}
	protected 	void pro() {System.out.println("AbstractBase.pro()");}
	public	 	void pub() {System.out.println("AbstractBase.pub()");}
	public final void show() {
		pri();
		pac();
		pro();
		pub();
	}
}

 

 

package P2;
import P1.AbstractBase;
public class Concrete1 extends AbstractBase {
	public 	void pri() {System.out.println("Concrete1.pri()");}
	public	void pac() {System.out.println("Concrete1.pac()");}
	public 	void pro() {System.out.println("Concrete1.pro()");}
	public 	void pub() {System.out.println("Concrete1.pub()");}
}

 

 

package P1;
import P2.Concrete1;
public class Concrete2 extends Concrete1 {
	public 	void pri() {System.out.println("Concrete2.pri()");}
	public	void pac() {System.out.println("Concrete2.pac()");}
	public 	void pro() {System.out.println("Concrete2.pro()");}
	public 	void pub() {System.out.println("Concrete2.pub()");}
}

 

package P3;
import P1.Concrete2;
import P2.Concrete1;
public class Concrete3 extends Concrete2 {
	public 	void pri() {System.out.println("Concrete3.pri()");}
	public	void pac() {System.out.println("Concrete3.pac()");}
	public 	void pro() {System.out.println("Concrete3.pro()");}
	public 	void pub() {System.out.println("Concrete3.pub()");}
	
	public static void main(String[] args) {
		new Concrete1().show();
		new Concrete2().show();
		new Concrete3().show();
	}
}

 

 

四个类,三个包,AbstractBase和Concrete2在包P1中,Concrete1在P2中,Concrete3在P3中。

运行结果:

 

写道
Create Object : class P2.Concrete1
AbstractBase.pri()
AbstractBase.pac()
Concrete1.pro()
Concrete1.pub()

Create Object : class P1.Concrete2
AbstractBase.pri()
Concrete2.pac()
Concrete2.pro()
Concrete2.pub()

Create Object : class P3.Concrete3
AbstractBase.pri()
Concrete3.pac()
Concrete3.pro()
Concrete3.pub()

 

 

结果分析:

1,所有子类都不能看到private,那么private方法始终没有被覆盖。

2,protected和public都能够被子类覆盖。

3,默认的package的是最有意思的,Concrete1和AbstractBase不在同一包不能覆盖正常,Concrete2和AbstractBase在同一包能够覆盖也正常,Concrete3 和AbstractBase不在同一个包,居然因为Concrete2已经覆盖了pac的方法,把这个打开成了public的了,没有想到。

分享到:
评论

相关推荐

    PackageAccessTest:Java 中包访问继承的演示

    包访问测试 Java 中具有包访问权限的父级继承的演示。 这是为了说明。

    \java中包及访问权限的使用笔记

    java中包及访问权限的使用笔记\java中包及访问权限的使用笔记

    解决java打包之后无法加载静态资源的问题SWTResourceManager.java源码

    利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...

    JAVA工具包大全

    alg(算法包): 提供AES算法、DES(3DES)算法、HD算法、HMAC算法、IDEA算法、MD算法、SHA算法。 cache(缓存包): 提供Ehcache缓存操作与管理的相关功能。 codec(编码包): 提供Base64编码、二进制编码...

    JAVA访问串口RXTX包(含演示代码 linux下测试可用)

    JAVA访问串口RXTX包,包含演示代码,windows 64位系统和linux 64位下测试可以使用。演示代码用了netty包,开发工具Idea, windows下安装包方法: a.复制rxtxSerial.dll 到%JAVA_HOME%\jreX/bin/ b.复制RXTXcomm....

    java访问access包

    第三方实现的java访问access 显示表格内容的源码: System.out.println(Database.open(new File("my.mdb")).getTable("MyTable").display()); 创建表并写入数据: Database db = Database.create(new File...

    java开源包4

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包8

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    JAVA解决URL路径中含有中文的问题

    JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。

    JAVA_API1.6文档(中文)

    javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net.ssl 提供用于安全套接字包的类。 javax.print 为 JavaTM ...

    java源码包2

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包4

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java连接oracle数据库jar包

    java连接oracle数据库jar包

    java源码包3

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java访问MSserver的驱动jar包

    这是一个java程序中访问MS server的驱动jar包

    java访问usb的包

    java 访问的包 ch.ntb.usb-0.5.7.jar libusb0.dll libusbjava.dll libusb-win32-filter-bin.exe-java package visit ch.ntb.usb-0.5.7.jarlibusb0.dlllibusbjava.dlllibusb-win32-filter-bin.exe

    java开源包6

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java-http请求jar包

    java 发送http请求 实现网络通信的全部jar包合集。 httpcomponents-client-4.5.5.rar

    java开源包11

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

Global site tag (gtag.js) - Google Analytics