关于java的多态
重载:方法名相同 返回类型和参数至少有一项不同(参数包括类型 和 数量)
重写:发生在子类 方法名 返回类型 参数都相同 只是把父类的此方法重新写而已
一直以来我对Facther f = new Son()这样的引用变量引用子类的实例都不是很懂。
还有就是向上向下转型
如:Animal animal = new Dog() // 引用变量引用了来自子类的实例
Dog dog = (Dog)animal; //将animal向下转型
Creature creature = (Creature)animal //将animal向上转型
成员变量、静态变量, 静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定。
例如,对于以下这段代码:
Fathers f=new Sons();
System.out.println(“f.var=”+f.var);
System.out.println(“f.staticVar=”+f.staticVar);
f.method();
f.staticMethod();
运行时将会输出如下结果:
f.var=FatherVar // 成员变量按照引用变量(f)的声明的类型(Father)静态绑定
f.staticVar=StaticFaterVar // 静态变量按照引用变量(f)的声明的类型(Father)静态绑定
Son method // 实例方法按照引用变量(f)的引用的实例(new Sons())动态绑定
Static Father method // 静态方法按照引用变量(f)的声明的类型(Father)静态绑定
class Fathers
{
String var="FatherVar";
static String staticVar="StaticFatherVar";
void method(){System.out.println("Father method");}
static void staticMethod(){System.out.println("Static Father method");}
}
class Sons extends Fathers
{
String var="SonVar";
static String staticVar="StaticSonVar";
void method(){System.out.println("Son method");}
static void staticMethod(){System.out.println("Static Son method");}
}
参考:http://hi.baidu.com/%CE%C4%D3%EA41/blog/item/9330b41f97375dcda68669e5.html
相关文档:
开发的时候有时候会碰到这样的情况,我们在写程序的时候并不知道需要调用某个对象的哪个方法,只有程序运行后,我们才能够知道。或许我们需要根据客户端传过来的某个String参数的值来判断我们应该执行哪个方法。在这种情况下JAVA的反射执行就可以帮上忙了。下面是我做的一个简单的测试代码,提供给大家做个参考。
i ......
2008-04-26 09:25 作者:superman 来源:赛迪网
[摘要] 首先,本文的目标读者是正在从事技术工作的架构师。避免讲述一些陈腐的最佳实践,例如"日常构建(build daily)"、"测试一切(test everything)"和"经常集成( integrate often)。 任何具有称职架构师的项目都有分工明确的、定义良好的团队结构。他们还为进行编 ......
代码如下:
package com.test.j2se;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
/**数据加密
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
MessageDigest code = MessageD ......
五个有用的过滤器
一、使浏览器不缓存页面的过滤器
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 用于的使 Browser 不缓存页面的过滤器
*/
public class ForceNoCacheFilter implements Filter { ......
public static boolean isCheckN(String pInput) {
String regEx = "^[0-9]+$";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(pInput);
......