(原創) 一個關於constructor的觀念問題 (C/C++) (.NET) (C#) (Java)
2007-02-16 15:22
537 查看
Abstract
一個在JavaWorld@TW有人發問的問題,雖然是Java,但在C++,C#都適用。
Introduction
http://www.javaworld.com.tw/jute/post/view?bid=29&id=140687&sty=1&tpg=4&age=0
1public class son extends father
2 public son( int i ) public son( int i , float f)
5 super( i,f);
7 }
8}
請問在father裡要加上那些建構子?
A:public father(){}
B:public father(int k){}
C:public father(int i, flaot f){}
D:public father(float f){}
答案是A,C,你答對了嗎?
3行public son(int i)這個constructor,因為沒有呼叫任何base-class的constructor,所以compiler會自動在body加上super()去呼叫base-class的default constructor,所以要選A。
4行public son(int i, float f)這個constructor,因為呼叫了base-class的super(i,f),compiler就不自動加上super()了,因此base-class須加上public father(int i, float f) {},所以要選C。
更詳細的理由請參考(原創) 為什麼derived-class會去執行base-class的default constructor? (C/C++)。
See Also
(原創) 為什麼derived-class會去執行base-class的default constructor? (C/C++)
(原創) default constructor的迷思 (C/C++)
一個在JavaWorld@TW有人發問的問題,雖然是Java,但在C++,C#都適用。
Introduction
http://www.javaworld.com.tw/jute/post/view?bid=29&id=140687&sty=1&tpg=4&age=0
1public class son extends father
2 public son( int i ) public son( int i , float f)
5 super( i,f);
7 }
8}
請問在father裡要加上那些建構子?
A:public father(){}
B:public father(int k){}
C:public father(int i, flaot f){}
D:public father(float f){}
答案是A,C,你答對了嗎?
3行public son(int i)這個constructor,因為沒有呼叫任何base-class的constructor,所以compiler會自動在body加上super()去呼叫base-class的default constructor,所以要選A。
4行public son(int i, float f)這個constructor,因為呼叫了base-class的super(i,f),compiler就不自動加上super()了,因此base-class須加上public father(int i, float f) {},所以要選C。
更詳細的理由請參考(原創) 為什麼derived-class會去執行base-class的default constructor? (C/C++)。
See Also
(原創) 為什麼derived-class會去執行base-class的default constructor? (C/C++)
(原創) default constructor的迷思 (C/C++)
相关文章推荐
- (原創) 為什麼C#、Java需要提供interface? (C/C++) (.NET) (C#) (Java)
- (原創) derived-class要怎麼呼叫base-class的constructor? (.NET) (C#)
- 开发语言 .net c# java objective-c 数据库SQL ORACLE 操作系统 QQ群 77763608
- Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++
- Atitit 项目语言的选择 java c#.net php??
- .Net/C#/VB/T-SQL/Java 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
- (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
- (原創) 关于用利用C#控制RS232硬件方面的书 (初級) (.NET)
- atitit.窗体静听esc退出本窗体java swing c# .net php
- C# vs Java —— Java剑 VS .NET刀 -- 东山再起(论模式)(二)
- C#简介:VC的NET,JAVA的KILLER?
- Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net
- (原創) 如何将图片以对角线做映射(Mirror)? (.NET) (ASP.NET) (C#) (GDI+) (Image Processing)
- (原創) 令人期待的C# 3.0/LINQ (.NET) (C#)
- Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- (非原创)c#和java的交互,使用IKVM.NET
- asp.net,java,jsp,安卓Android,苹果ios,php,vb.net,c#免费毕业课程设计源码共享网盘下载
- Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net
- (原創) 回讀者的信,一篇學習C#/C++/OO的FAQ (OO) (Design Pattern) (C/C++) (.NET) (C#)