使用super关键字在子类的构造器里调用父类的普通方法,例如:
天水网站建设公司成都创新互联,天水网站设计制作,有大型网站制作公司丰富经验。已为天水上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的天水做网站的公司定做!
/**
* 父类
*
* @author qd
*
*/
class F {
public void teatA() {
System.out.println("teatA方法");
}
}
/**
* 子类
*
* @author qd
*
*/
class S extends F {
// 子类构造器中调用父类普通方法
public S() {
super.teatA();
}
}
/**
* 测试类
*
* @author qd
*
*/
public class Test1 {
public static void main(String[] args) {
S s = new S();
}
}
运行结果:
最近我看见有人问过这个问题。在此我想表达一下自己的观点。
根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。
我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent(
),c(0){//在这里,创建Child对象时先构造父类域}Child(inti):Parent(i+1
),c(i){//同上}};
由于构造函数非常特别,对它的调用就像是调用一个C函数一样,而不是利用对象来调用的(若不先构造对象哪儿来的对象?)。因此鉴于这份特殊性我们可以这么考虑:
将上述代码中classChild:publicParent去掉:
public
Parent,我们可以编译试试,是否能成功。事实上正是因为Parent与Child有亲子关系,所以Child构造函数中可以调用Parent的构造函数先对其Parent域进行初始化。这个特点非常符合工程学详见我的文章《我比起Java更喜欢C++的理由语义》。
下面将贴出相应的Java代码:classParent{privateintp;publicParent(){p=0;}publicParent(inti){p=i;}}classChildextendsParent{privateintc;publicChild(){super();c=0;}publicChild(inti){super(i+1);c=i;}}
我们可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性比如你也可以在Child类中的某一个方法中这么写:Parent
p
=
new
Parent();而利用super()就表示了子类在初始化本类域前先初始化其父类域。这也可以证明在Java中子类继承父类构造方法,并且子类可以通过super来访问父类的构造方法,只要父类的构造方法不是private。
在做测试的时候,需要模拟HTTP server的handle函数直接调用:
就不用通过发送curl命令,而是直接调用handler函数的方式;这样就需要手动构造出一个http.ResponseWriter和http.Request,然后调用Handler函数。
好在golang自带的"net/http/httptest"包就有这个功能:
如果使用"github.com/gorilla/mux"的router包想使用Vars可以这么设置:
然后在Handler函数里,就能使用:
网站名称:go语言子类构造方法 go语言没有类
本文链接:https://www.cdcxhl.com/article14/doeihge.html
成都网站建设公司_创新互联,为您提供网站排名、网站设计、云服务器、定制网站、响应式网站、网站导航
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联