关于有参构造函数的继承问题详解编程语言

基础不扎实啊。。。
今天在写代码的时候,父类写了一个有参的构造函数,结果子类怎么写都报错,提示父类不包含采用“0”参数的构造函数。在父类增加一个无参的构造函数之后,确实不报错了,但却不是我想要的处理方式。于是从网上搜了一下,解释是这样的:

类会从下往上延继承关系依次调用父类的无参构造函数。当FatherClass的无参构造函数被注释后,这条通道自然就不存在了,当然会报错。

解决办法很简单,在子类的构造函数中显示调用父类的有参构造函数。下面写了Java和C#对应的写法。

Java正确写法

public class Father { 
	public Father(int i) { 
	} 
} 
 
class Son extends Father { 
	public Son(int i) { 
		super(i); 
	} 
} 

C#正确写法

class Father 
{ 
    public Father(string s) 
    { 
        Console.WriteLine("father said " + s); 
    } 
} 
class Son : Father 
{ 
    public Son(string s) : base(s) { } 
} 

参考:
C#类继承中构造函数用法小结

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8904.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论