关于子类继承父类的问题。。

问题描述

有一个抽象MainServlet类,继承了HttpServlet。又写了一个普通类AdminServlet,继承了MainServlet。当请求指向AdminServlet时,又走了MainServlet中的post方法,很是不解啊。。。另外,在post方法中打印this,竟然是AdminServlet的hash值。为什么啊???这是代码,MainServlet:publicabstractclassMainServletextendsHttpServlet{@OverridepublicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{doPost(req,resp);}@OverridepublicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{StringmethodName=req.getParameter("cmd");if(methodName==null||methodName.trim().equals("")){methodName="execute";}try{Methodmethod=this.getClass().getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);method.invoke(this,req,resp);}catch(Exceptione){thrownewRuntimeException(e.getMessage(),e);}}publicabstractvoidexecute(HttpServletRequestreq,HttpServletResponseresp)throwsException;}AdminServlet:publicclassAdminServletextendsMainServlet{privateAdminServiceservice=newAdminService();publicvoidexecute(HttpServletRequestreq,HttpServletResponseresp)throwsException{Stringname=req.getParameter("name");Stringpassword=req.getParameter("password");Adminadmin=null;if(admin==null){System.err.println("wrong");}}}还请大神们解答啊

解决方案

解决方案二:
我没看你的代码,不过我觉得调用了父类的方法是因为子类没有覆盖父类的方法,所以在调用子类方法的时候,用的还是父类的方法,this指向的是当前的类所以打印的是当前类的值
解决方案三:
引用1楼u010883383的回复:

我没看你的代码,不过我觉得调用了父类的方法是因为子类没有覆盖父类的方法,所以在调用子类方法的时候,用的还是父类的方法,this指向的是当前的类所以打印的是当前类的值

可是这个doPost方法是在MainServlet中的,在doPost中打印this,出来的是AdminServlet的hash值啊
解决方案四:
楼主,代码贴出来
解决方案五:
可是这个doPost方法是在MainServlet中的,在doPost中打印this,出来的是AdminServlet的hash值啊这个肯定的,就算在父类的方法中,this也是同一个对象,都是子类的对象
解决方案六:
整个继承链里地this都是一样的,都是最下面那个子类的实例
解决方案七:
引用2楼TheNewSky的回复:

Quote: 引用1楼u010883383的回复:
可是这个doPost方法是在MainServlet中的,在doPost中打印this,出来的是AdminServlet的hash值啊

可是你调用的时候方法真正方法的实现是子类的啊。。继承的方法某种程度上讲就是在子类中直接写上代码的。。
解决方案八:
this指向当前运行时类型,子类没有覆写父类方法,调用的时候实际上还是调用了父类的方法只是调用的人不一样了
解决方案九:
大哥啊,您的的MainServlet中只有一个publicabstractvoidexecute(HttpServletRequestreq,HttpServletResponseresp)throwsException;是抽象的,而且您的AdminServlet中也只实现了该方法,并没有override父类的doPost和doGet方法,那程序肯定会调用父类的方法了,在父类的doPost中使用this肯定是MainServlet啊。。。。建议你还是多看看javase吧。。。

时间: 2024-11-03 17:03:30

关于子类继承父类的问题。。的相关文章

子类继承父类实现父类的代理方法

子类继承父类实现父类的代理方法 父类提供虚函数(OC中称为代理方法),子类继承后实现虚函数来实现特定的功能. 父类方法: NumberCount.h 与 NumberCount.m // // NumberCount.h // YXMWeather // // Created by XianMingYou on 15/2/18. // Copyright (c) 2015年 XianMingYou. All rights reserved. // #import <Foundation/Foun

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

java语法-子类继承父类关于super关键词的问题

问题描述 子类继承父类关于super关键词的问题 子类继承父类关于super关键词的问题 super ( ) 和super eat ( )的区别 是不是super( )只是复写了父类的构造方法 super eat ( )只是复写了父类的eat方法 那么super.eat( )这种写法是错误的么 我记得有super.╳╳╳这种写法的 解决方案 你看到的应该是调用父类的内嵌类.

wpf c#-请教:WPF中 子类继承父类的INotifyPropertyChanged的问题

问题描述 请教:WPF中 子类继承父类的INotifyPropertyChanged的问题 父类实现了INotifyPropertyChanged接口,子类数据改变时如何驱动父类的INotifyPropertyChanged? 父类实现接口方法: public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// 数据驱动 /// </summary> /// <param name=&quo

java中子类继承父类,程序运行顺序的深入分析_java

我们经常在项目中使用继承,但是往往不太明白,程序运行的顺序以及原理,尤其是使用上转型对象的时候,以及父类子类中都有static变量和方法时,不知道先运行谁.我也是写了一个例子.总结了一下. 复制代码 代码如下: 父类:public class TestStatic {     public static String name="china";     {       System.out.println("========方法体========");    }  

子类继承父类后重载protected方法提升访问权限为public

某汽车公司有一款新车上市,但该公司规定这款车必须由公司内部人员驾驶,那么也就是这样  代码如下 复制代码 public class NewCar{  protected void drive() {  // drive the car  } } 不过你说我买来一辆车总不能让这汽车公司的人来为我开车吧,所以这车的驾驶功能应该对我开放了才行,当然,只有属于我的车我才可以这样做,所以  代码如下 复制代码 class MyNewCar extends NewCar {  @Override  publ

java继承-java关于子类继承的问题

问题描述 java关于子类继承的问题 在java中子类可以继承父类的对象吗 子类都可以继承父类的哪些功能 解决方案 令人费解的java继承问题java笔试问题(继承)java 中 集合类相关问题 解决方案二: 继承父类对象是什么意思?子类继承父类所有的属性和方法. 解决方案三: 子类当然可以继承父类,继承,顾名思义,就是子类拥有父类的所有方法和属性,此外,在子类中还可以定义一些父类中没有的方法,.当子类继承父类后, 可以直接调用父类的方法.不用再去创建,定义.这样,大大增加了代码的重用率,提高了

java-子类继承父类,表示is a 。为什么还要有private 修饰的方法和属性访问不到呢?

问题描述 子类继承父类,表示is a .为什么还要有private 修饰的方法和属性访问不到呢? 子类继承父类,表示is a .为什么还要有private 修饰的方法和属性访问不到呢? 解决方案 这个is表示这两个类关联度高,含有很多相同的东西,并不是说完全相同,老爸有的东西儿子也不一定都有的对吧? 解决方案二: 之所以你的父类里面有private的方法和属性,这可能是因为你的父类里面有其独特的东西,子类虽是继承于父类,但不意味着父类就没有只属于自己的东西,子类的存在我想更多的是因为多态,而不是

android java 继承父类里的子类问题!!!!!!!

问题描述 android java 继承父类里的子类问题!!!!!!! 请问各位,java可以继承父类的方法和全部属性,那父类里的子类可以继承使用么? android 可以继承父类的Handler.广播么??