关于"多态"static方法的理解
来源:互联网 发布:java 红黑树原理 编辑:程序博客网 时间:2024/04/30 14:57
要强调的是,多态性只发生于方法,而不发生于域.并且,对于方法,只有那些非static与非final方法才具有多态性.
这里讨论的是static方法不能发生多态.值得注意的是,所谓的static方法不能多态指的是:override的方法本身是不是static的,而不是指调用override方法的方法是不是static的!
比如以下程序:
class Father ...{
public void act() ...{
System.out.println("Father.act()");
}
}
class Son extends Father ...{
public void act() ...{
System.out.println("Son.act()");
}
}
public class Test ...{
public static void test(Father i) ...{
i.act();
}
public static void main(String[] a)...{
Son son = new Son();
test(son);
}
}
public void act() ...{
System.out.println("Father.act()");
}
}
class Son extends Father ...{
public void act() ...{
System.out.println("Son.act()");
}
}
public class Test ...{
public static void test(Father i) ...{
i.act();
}
public static void main(String[] a)...{
Son son = new Son();
test(son);
}
}
输出结果为:Son.act(),如果static不能多态,那结果不就应该是Father.act()吗?
其实,就象上面说的.我们要考虑的是的act()方法是不是static,有没有多态,而不是调用的方法test()是不是static的.
这跟test方法是否static无关,若把两个act方法都修改成static,则输出结果就是Father.act(),因为static方法不能多态.
- 关于"多态"static方法的理解
- static方法的理解
- 关于Java中static方法的一点理解
- 关于关键字static的理解
- 关于static的一些理解
- java 关于对“是否可以从一个static方法内部发出对非static方法的调用”问题的理解
- java中关于final方法与static方法不具备多态性的理解
- java中关于static的简单理解
- 关于static与堆栈的简单理解
- 关于javase中static关键字的理解
- c++中关于static的理解
- 关于static方法间的互相调用
- 关于关键字 extern static 的几点理解
- 关于“const ”关键字和“static”关键字用法的一些理解
- 关于static(静态)变量的一些理解
- Java中关于static语句块的理解
- 关于getClass()方法的理解
- 关于核方法的理解
- JSF(JSP)中使用FCKeditor上传图片问题的解决
- aspx 获得提交的表单对象
- 需求管理
- Rational TestManager (TM)安装(转摘)
- 人生的第一个Python程序
- 关于"多态"static方法的理解
- FTP命令详解
- oracle分页查询
- PHP Session丢失问题解决
- ORACLE 中ROWNUM用法总结!(精华)
- 未来
- Differences Among Greedy, Reluctant, and Possessive Quantifiers
- 常用电源IC
- static方法(与隐式static方法)