收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » Java »Java基础 之隐藏、复写、遮掩、遮蔽、和重载  XML
发表人 内容
zhang
[头像]

交流经验:
总积分:261656
级别:VIP5
注册时间: 2011-08-09
文章: 1163
离线

覆写

覆写(override):一个实例方法可以overide在其超类中可以访问到的具有相同签名的所有方法,从而可以动态分派(dynamic dispatch)

 

VM基于运行时类型来选择要调用的覆写方法。

 

java代码:
class Base {
	public void f() {
	}
}

class Derived extends Base {
	public void f() {
	} // overrides Base.f()
}

 

 

隐藏

一个域,静态方法,或成员类型可以分别被隐藏(hide)在其超类可以访问到的具有相同名字的所有域、静态方法或成员类型。hide几个成员将阻止其被继承。JLS 8.3,8.4,8.5

 

 

java代码:
class Base {
	public static void f() {
	}
}

class Derived extends Base {
	private static void f() {
	} // hides Base.f()
}

上例将不能编译通过:Cannot reduce the visibility of the inherited method from Base。

重载

在某个类中的方法可以重载(overload)另一个方法,只要它们具有相同的名字和不同的签名。由调用所指定的重载方法是在编译期选定的[JLS 8.4.9, 15.12.2]: 

 

java代码:
class CircuitBreaker {
	public void f(int i) {
	} // int overloading

	public void f(String s) {
	} // String overloading
}

 

遮蔽
一个变量、方法或类型可以分别遮蔽(shadow)在一个闭合的文本范围内的具有相同名字的所有变量、方法或类型。如果一个实体被遮蔽了,那么你用它的简单名是无法引用到它的;根据实体的不同,有时你根本就无法引用到它[JLS 6.3.1]:

 

java代码:
class WhoKnows {
	static String sentence = "I don't know.";

	public static void main(String[] args) {
		String sentence = "I know!"; // shadows static field
		System.out.println(sentence); // prints local variable
	}
}

 

遮掩

一个变量可以遮掩(obscure)具有相同名字的一个类型,只要它们都在同一个范围内:如果这个名字被用于变量与类型都被许可的范围,那么它将引用到变量上。相似地,一个变量或一个类型可以遮掩一个包。遮掩是唯一一种两个名字位于不同的名字空间的名字重用形式,这些名字空间包括:变量、包、方法或类型。

例如下面的代码不能编译:变量遮掩了类型。

 

java代码:
public class Obscure {
	static String System; // <span style="color: #ff0000;">Obscures type java.lang.System</span>

	public static void main(String[ ] args) {
	// Next line won't compile: System refers to static field
	System.out.println(”hello, obscure world!“);
	}
}

 

这篇文章被编辑了 1 次. 最近一次更新是在 2011-10-31 14:19:23


推广链接
精品视频课程推荐

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容

Spring3开发实战-独家视频教程
从零到精通Spring3的开发知识;IoC/DI的思想、IoC/DI的运行流程、IoC/DI的开发指导、AOP的思想、AOP的运行流程、AOP应用的设计、Spring对JDBC和Hibernate的支持、Spring的事务、SSH的集成应用

Ajax+JSON基础实战视频教程
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用

zhang
[头像]

交流经验:
总积分:261656
级别:VIP5
注册时间: 2011-08-09
文章: 1163
离线

总结:

  1、覆写,动态绑定(运行期间)

 

  2、其他,静态绑定(编译期间)

 

  可以把 隐藏、遮蔽、遮掩 都看作 隐藏,查找顺序是找最近的,找到即停止。。。

这篇文章被编辑了 2 次. 最近一次更新是在 2011-10-31 15:02:53

 
交流首页 » Java
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网