收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

威尼斯人线上赌博注册 

交流首页 » 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来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

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

log4j&slf4j基础实战视频教程
学习在java项目中使用log4j、jdk自带的日志框架和slf4j

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

深入浅出学Spring Web MVC视频教程
系统、完整的学习Spring Web MVC开发的知识。包括:Spring Web MVC入门;理解DispatcherServlet;注解式控制器开发详解;数据类型转换;数据格式化;数据验证; 拦截器;对Ajax的支持;文件上传下载;表单标签等内容;最后以一个综合的CRUD带翻页的应用示例来综合所学的知识

zhang
[头像]

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

总结:

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

 

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

 

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

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

 
交流首页 » Java
前往:   

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

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

博聚网
博聚网