易截截图软件、单文件、免安装、纯绿色、仅160KB

java中的方法重写,小弟新手 - Java / Java SE

class door{

}
class woodDoor extends door{

}
class math{
static public door getMsg(){
return new door();
}
static String getS(){
return new String("父类");
}
}
public class MaoPaoPaiXu extends math{
public static void main(String args[]){
MaoPaoPaiXu s=new MaoPaoPaiXu();
System.out.println(s.getS());
}
static public woodDoor getMsg(){
return new woodDoor();
}
static String getS(){
return new String("子类");
}
}
请前辈帮我讲解一下调试输出的是”子类“这是否说明父类的 getS()被重写了???(书上说static方法无法被重写)
如果将MaoPaoPaiXu s=new MaoPaoPaiXu();改写为math s=new MaoPaoPaiXu();输出的则是“父类”
math s=new MaoPaoPaiXu();说说明编译的时候是math 运行的时候是MaoPaoPaiXu,s最后是MaoPaoPaiXu的对象引用
为什么还输出“父类”
static方法牵扯到了面向对象与全局函数的问题
假如你的getS()方法没有static关键字,那math s=new MaoPaoPaiXu();引用s指向MaoPaoPaiXu(),
当调用getS()时,他是通过向对象发送消息来实现的,虽然math和MaoPaoPaiXu都有getS()方法,
s.getS(),s是引用,对象是MaoPaoPaiXu,调用方法是向对象发送消息,所以调用的是子类的getS()方法
但是你加了static,方法就不是这样调用的了
确切的说,加了static的方法是全局方法,而且他不是通过向对象发送消息来实现方法调用的,而是直接调用本身的方法
所以你虽然s是MaoPaoPaiXu的引用,但却调用不到MaoPaoPaiXu的getS()方法

加了st


相关问答:

C/S项目架构设计----求助 - Java / Java SE

本人正在用Java做一个C/S架构的项目, 
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。 
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......

java使用代理访问网址 - Java / Java SE

代码如下 ,我想通过代理访问一些网址,但是不知道如何测试代理成功,我想通过访问“http://www.blogger.com/”来看看是否代理成功,但是也不能访问,出现异常“Unexpected end of file from server”,但是如果不这 ......

一道java题目,等待大家给予解答~~ - Java / Java EE

题目:
  有1,2,3,4,5,6六个数字排序,用java程序计算出排序的种类。
  要求:一,以4开头
  二,2,3不能相邻
  三,不能以5开头
  希望大家能即 ......

tomcat环境下jsp编译错误,求解! - Java / Web 开发

org.apache.jasper.JasperException: Unable to compile class for JSP: 
An error occurred at line: 52 in the jsp file: /vip_info.jsp
ÕË cannot be resolved
49: <table border="1& ......

jsp的问题 - Java / Web 开发

大家好,我在JSP的初学者,在编程中遇到了一个问题:
<jsp:useBean id="accountBiz" class="bank.AccountBiz" 
scope="application">
这个标签中application和sessi ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号