A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段永正 黑马帝   /  2012-2-4 15:26  /  2482 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class A  
{ public A( ) { Console.WriteLine("A"); } }  
class B:A  
{ public B() { Console.WriteLine("B"); } }  
class Program
{ public static void Main() {
B b = new B(); Console.ReadLine(); } }
为什么答案是A B

评分

参与人数 1技术分 +2 收起 理由
朱勋 + 2

查看全部评分

7 个回复

倒序浏览
继承是指一个对象直接使用另一对象的属性和方法。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
因为B继承了A,在new出B的对象的时候,首先先要构造父类,调用父类的构造函数,然后在构造子类

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 安超 于 2012-2-26 09:18 编辑

b继承自A,所以构造方法也要先从父类那里开始构造,父类的构造方法是打印A,然后执行自己的构造方法,自己的构造方法是输出b,因此输出了A B

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
{ public static void Main() {
B b = new B(); Console.ReadLine(); } }
你实例化对象后,用Console.ReadLine();???根本就没有任何的输出呀?怎么用有答案A B呢?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
因为你继承了A,所以当你在B b = new B(); 的时候,它先调用A的构造函数进行执行。所以先打印出A再打印出B

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
李紫仪 黑马帝 2012-2-25 23:57:41
7#
B继承A,所以B的构造函数里有一个 Console.WriteLine("A");
继承的时候又在构造函数里添加了一个 Console.WriteLine("B");
所以调用构造函数时输出了AB

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
邓坤 中级黑马 2012-2-26 12:23:22
8#
B继承A,就是继承了A的属性和方法,在对B实例化(b)时,b就会调用A的构造函数,
即输出A,然后调用自身的构造函数,即输出B

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马