Father father=son; 这是一个向上转型注意这可不是C++里的指针,这些都是instances所以father就是Father的实例
解决方案 »
- 返回值为空,读不到配置文件
- 服务器重启,quartz执行
- <s:if >点用
- 大家快来看!java造对象多种方式,各有什么优点!
- 请问有在上海做Java的程序员吗?招人吗?
- The server encountered an internal error () that prevented it from fulfilling this request.
- 【求助】:请已经有工作的GG们来这里指导小弟一下,谢谢
- solaris 8 ,weblogic 6.0的post请求0.5秒后 报read timed out 异常
- 有没有将一个XML文档转换为一棵JTree显示的例子,拜托拜托!
- 请各位高手指点一下(如何配置web.xml)?
- 请问:在struts-config.xml与在tomcat的server.xml配置数据源,有什么差别吗?
- 如何提高自己学习JAVA编程?????
public int getNumber(int a) {
return a + 1;
}
}
class B extends A {
public int getNumber (int a) {
return a + 2;
}
}
public class TestAB {
public static void main (String args[]) {
A a = new B();
System.out.println(a.getNumber(0));
}
} 可为什么输出的结果却是2呢?
为什么就没有向上转型呢?
也就是实际上它还是指向Father的一个句柄不太好解释,我的水平也有限,总之一句话Father f = new Son();对象一定是Son至于
Son s = new Son();
Father f = s;就如dzmonkey(dzmonkey)所说,是个上溯造型吧 :)
继续等高手来解释
String s = "test" ;
Object obj = s ;
这是对的,并且是安全的下溯造型就是强制转型,如果你现在有一个Object对象,但你并不知道它真正的类型,这时如果你强制将其任意转型
Object obj = new Object() ;
...
...
String s = (String)obj ;就会出现不定的情况:
1.如果...中的代码行恰好将obj指向一个String类型的句柄,那么,你的转型是正确的
2.如果...中没有如1中将obj指向一个String而是其他类型(Integer, etc..)那么程序在运行时会抛出ClassCastException,也就是我们常说的造型异常.从上面的例子可以看出,上溯造型(Upcasting)是安全的,并且不需要指定转换类型
而下溯造型(Downcasting)是不安全的,除非你明确知道其类型,否则可能会出错,并且,下溯时需要明确指定转换类型.
还有一个常用的例子:
大家在做b/s应用时常用的两个对象request和session,他们都有setAttribute(String,Object);方法,因此我们在使用 request.getAttribute("") 和 session.getAttribute("")方法时是不是都要强制转一下型呢, 如
String name = (String) session.getAttribute("name") ;
关于造型Thinking in java中讲的比较详细,可以看看
为什么Father father=son; father.shou("dd")方法调用的是Father的方法呢?
Son son=new Son();//生成son的实例
Father father=son;//把son向上转型成father。也就是Father father=(Father)son。类型变了
public class Father {public Father() {
super();}
public void shout(Object word){ //真正问题是出在这里的参数Object,它不是之类的String;所以实际上,楼主这个程序根本就构不成子类方法覆盖父类方法的多态条件;
System.out.println("object father shout:"+word);
}}
//输出结果为:
string son shout:hello//在子类对象中,两个shout方法重载中,参数为String的更匹配,所以调用子类中的shout方法;
object father shout:hello//由于是父类引用,而且不构成多态,所以只能调用父类的shout方法
http://www.javatx.cn/clubPage.jsp?ccStyle=0&tID=724&ccID=6
http://community.csdn.net/Expert/TopicView3.asp?id=4816106乱码还原问题!
http://community.csdn.net/Expert/TopicView3.asp?id=4813786关于javabean反射代理的问题
http://community.csdn.net/Expert/TopicView3.asp?id=4813935
这条语句能够编译通过,并且执行.因为Father也有那个son有的方法.所以在调用时,是调用Father的方法.如果Father没有son的那个方法.这条语句就会出错.
只能用
Father father=(Father)son;
这样实现