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
相关问答:
本人正在用Java做一个C/S架构的项目,
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......
代码如下 ,我想通过代理访问一些网址,但是不知道如何测试代理成功,我想通过访问“http://www.blogger.com/”来看看是否代理成功,但是也不能访问,出现异常“Unexpected end of file from server”,但是如果不这 ......
题目:
有1,2,3,4,5,6六个数字排序,用java程序计算出排序的种类。
要求:一,以4开头
二,2,3不能相邻
三,不能以5开头
希望大家能即 ......
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的初学者,在编程中遇到了一个问题:
<jsp:useBean id="accountBiz" class="bank.AccountBiz"
scope="application">
这个标签中application和sessi ......