`

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 中包访问继承的演示

    总结来说,`PackageAccessTest`展示了Java中包访问权限在继承关系中的应用。这种权限控制使得开发者能够在保持代码封装性的同时,允许子类进行必要的继承和扩展。理解和熟练运用这些访问修饰符对于编写健壮、易于...

    你们想要的java jar包全都有

    在Java开发中,JAR包扮演着重要角色,它们可以是独立的应用程序(通过主类执行),也可以作为库被其他项目引用。这些JAR文件包含了编译后的字节码,可以被Java虚拟机(JVM)加载和执行。 在"压缩包子文件的文件名称...

    java的jar包

    Java的JAR(Java Archive)包是Java编程语言中用于集合类和其他资源文件的压缩格式。它主要用于分发和运行Java应用程序和库。JAR文件包含编译后的.class文件,元数据(如MANIFEST.MF文件),以及其他资源文件,如...

    java类库 java包

    接下来,我们讨论Java包。包在Java中扮演着组织和命名空间的角色。它帮助管理类的命名冲突,并允许开发者将相关的类和接口组织在一起。包通过`package`关键字声明,比如`package com.example.myapp`。常见的包有`...

    java实现读取证书访问https接口

    在Java编程环境中,访问HTTPS接口通常涉及到网络通信和安全性的处理。HTTPS协议是HTTP协议的安全版本,通过SSL/TLS协议提供了数据加密、服务器身份验证和消息完整性检查,以确保网络通信的安全。本教程将深入讲解...

    JAVA中用到的json包

    JSON包在Java中扮演着至关重要的角色,因为它允许开发者在Java对象与JSON字符串之间进行无缝转换,这对于网络通信、数据存储以及API交互等方面非常有用。 1. **JSON对象与Java对象的转换** - `JSONObject` 类是...

    在java中实现对access数据库的远程访问

    (java 中实现对 access 数据库的远程访问) java 中实现对 access 数据库的远程访问是指在 java 中通过远程访问 access 数据库,以满足项目中的需求。在实际项目中,可能会遇到这样的问题:A 服务器上的应用程序需要...

    java连接oracle数据库jar包

    在Java中实现Oracle数据库连接,我们需要用到特定的JAR包,这些JAR包通常包含在Oracle的数据库客户端或者Oracle JDBC驱动程序中。 首先,Oracle JDBC驱动分为两种类型: Thin驱动和 Thick驱动。Thin驱动是一种纯...

    JAVA_API1.6文档(中文)

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

    Java抓包程序

    在这个项目中,我们看到一个基于Java开发的图形用户界面(GUI)抓包工具。下面我们将深入探讨相关知识点: 1. **Java**: Java是一种跨平台的面向对象的编程语言,被广泛应用于服务器端开发、桌面应用、移动应用等。...

    Java中的访问控制

    4. **默认(无修饰符)**:这种访问控制级别也称为包访问或内部访问,意味着只有同一包内的类可以访问这些成员。在没有指定任何访问修饰符的情况下,类、接口、方法和字段将具有这种默认的访问权限。 通过合理使用...

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

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

    Java包与文件操作

    在Java编程中,包(Package)是组织和管理类的一种机制,它有助于避免命名冲突,同时提供了一种访问控制的方式。文件操作则是指在磁盘上读取、写入或移动文件,这是程序与外部存储交互的基础。在这个场景中,我们...

    JAVA工具包大全

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

    java代码包

    一、Java包的创建与结构 1. 命名规范:Java包的命名通常遵循反向域名的规则,例如`com.example.myapp`,这里的`com`、`example`和`myapp`分别代表顶级域名、公司或组织名以及项目名。 2. 包的目录结构:在文件系统...

    java的workbook类的jar包

    在Java项目中,这可以通过IDE的依赖管理功能(如Maven或Gradle)或者手动将jar包放入`lib`目录并配置`classpath`来实现。 在压缩包子文件的文件名称列表中,"jxl"可能指的是JExcelApi,这是另一个用于处理Excel的...

    java concurrent 包 详细解析

    Java并发包(java.concurrent)是Java平台中处理多线程编程的核心工具包,它提供了丰富的类和接口,使得开发者能够高效、安全地编写多线程程序。这个包的设计目标是提高并发性能,减少同步代码的复杂性,并提供高级...

    java访问hive数据库所需全部jar包

    以上就是使用Java访问Hive数据库所需的基本知识,包括所需的jar包及其作用,以及如何在Java项目中集成和使用这些库来执行Hive查询。在实际操作中,你可能还需要根据具体的环境和需求调整配置,例如设置Hive的配置...

    java集成kettle所有jar包

    Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...

Global site tag (gtag.js) - Google Analytics