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的了,没有想到。
分享到:
相关推荐
包访问测试 Java 中具有包访问权限的父级继承的演示。 这是为了说明。
java中包及访问权限的使用笔记\java中包及访问权限的使用笔记
利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...
alg(算法包): 提供AES算法、DES(3DES)算法、HD算法、HMAC算法、IDEA算法、MD算法、SHA算法。 cache(缓存包): 提供Ehcache缓存操作与管理的相关功能。 codec(编码包): 提供Base64编码、二进制编码...
JAVA访问串口RXTX包,包含演示代码,windows 64位系统和linux 64位下测试可以使用。演示代码用了netty包,开发工具Idea, windows下安装包方法: a.复制rxtxSerial.dll 到%JAVA_HOME%\jreX/bin/ b.复制RXTXcomm....
第三方实现的java访问access 显示表格内容的源码: System.out.println(Database.open(new File("my.mdb")).getTable("MyTable").display()); 创建表并写入数据: Database db = Database.create(new File...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。
javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net.ssl 提供用于安全套接字包的类。 javax.print 为 JavaTM ...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
java连接oracle数据库jar包
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
这是一个java程序中访问MS server的驱动jar包
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
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
java 发送http请求 实现网络通信的全部jar包合集。 httpcomponents-client-4.5.5.rar
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...