码迷,mamicode.com
首页 > Windows程序 > 详细

C#基础知识——类的继承

时间:2015-05-10 22:13:49      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

继承是C#的三大特性之一,它实现了多态性和代码复用

技术分享
 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             ChinesePerson c1 = new ChinesePerson();
 6             c1.name = "任家萱";
 7             c1.SayMyName();
 8 
 9             //子类可以默认转换为父类,所以子类可以用来实例化父类
10             Person p1 = new ChinesePerson();
11             p1.name = "田馥甄";
12             p1.SayMyName();//这里执行的是父类(Person)的SayMyName方法
13 
14             //将父类转成子类需要强制转换
15             ChinesePerson c2 = (ChinesePerson)p1;
16             c2.SayMyName();//这里执行的是子类(ChinesePerson)的SayMyName方法
17 
18             //强制转换的时候必须是有直接继承关系才能完成强转否则会出异常
19             //object o1 = new object();
20             //ChinesePerson t2 = (ChinesePerson)o1; //转换失败,出现异常
21             //ChinesePerson t3 = o1 as ChinesePerson; //转换失败,结果的值是null
22 
23             //声明的是父类,实例化是子类对象,则这个父类变量可以被强转为子类对象
24             Person p3 = new ChinesePerson();
25             ChinesePerson c3 = (ChinesePerson)p3;
26             ChinesePerson c4 = p3 as ChinesePerson;
27             c3.name = "陈嘉桦";
28             c3.SayMyName();
29             c4.name = "张宇";
30             c4.SayMyName();
31 
32             //声明的是父类,实例化的是父类对象,则这个父类变量不能被强转为子类对象
33             //Person p2 = new Person();
34             //ChinesePerson t2 = (ChinesePerson)o1; //转换失败,出现异常
35             //ChinesePerson t3 = o1 as ChinesePerson; //转换失败,结果的值是null
36 
37             //错误,不能用父类实例化子类对象,等号左边声明子类变量,语法上可以按变量类型来”.”
38             //出变量类型成员使用,但是访问是在等号右边堆空间进行的,堆空间父类没有子类成员,
39             //那么根本就无法访问
40             //ChinesePerson p5 = new Person();
41         }
42 
43         public class Person 
44         {
45             public string name;
46             public void SayMyName() 
47             {
48                 Console.WriteLine("我叫" + name);
49             }
50         }
51 
52         public class ChinesePerson : Person 
53         {
54             public void SayMyName()
55             {
56                 Console.WriteLine("我叫" + name + ",我是中国人。");
57             }
58         }
59 
60     }
View Code

 

输出结果:技术分享

 

C#基础知识——类的继承

标签:

原文地址:http://www.cnblogs.com/lcxBlog/p/4493037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!