码迷,mamicode.com
首页 > 其他好文 > 详细

多态和接口以及is和as运算符

时间:2016-06-20 20:45:29      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

多态:

继承同一个父类的多个子类各自之间都是独立的,各自的使用都是不同的。

父类中可以出现虚方法,虚方法在子类中通过重写使用。

虚方法:virtual   重写:override

 1 class Ren
 2     {
 3         public void chifan()
 4         {
 5             Console.WriteLine("我必须得吃饭!");
 6         }
 7 
 8         public virtual void xihuanchi()//虚方法
 9         {
10             Console.WriteLine("喜欢吃肉,蔬菜,水果!");
11         }
12 
13     }
14 
15 
16  class Nan : Ren
17     {
18         public override void xihuanchi()//重写
19         {
20             Console.WriteLine("我是男人,我只喜欢吃肉!");
21         }
22 
23         public void zuqiu()
24         {
25             Console.WriteLine("我喜欢足球!");
26         }
27     }

 

父类又称作基类,子类又称作派生类或者超类。

抽象类:abstract

抽象类就是用来被继承的,不能实例化,因为没有构造函数,抽象方法不能有方法主体,只能定义方法的结构。抽象方法或者抽象属性只能存在与抽象类中,但是抽象类中不一定只存在抽象方法和抽象属性。

 1 abstract class Ren//抽象类
 2     {
 3         public virtual void chifan()
 4         {
 5             Console.WriteLine("用嘴吃饭!");
 6         }
 7 
 8         public abstract void xihuanchi();//抽象方法
 9 
10     }

 

 

 

 

接口:

在团队开发中,一个类需要继承多个类,但是父类只能有一个,所以出现了接口。

接口里面的方法很像抽象方法,用interface定义。

1  public interface Sports//接口
2     {
3         void Sport1();
4     }

 

 

 

is和as运算符:

is是判断是否是某个类型,返回true或者false。

as是转换数据类型,如果转换不成功不会报错,二十返回一个null值。

 1             ArrayList arr = new ArrayList();
 2 
 3             Ren r = new Ren();
 4            
 5             Random ran = new Random();
 6 
 7             arr.Add(r);
 8             arr.Add(ran);
 9 
10             foreach (object o in arr)
11             {
12                 Ren rr = o as Ren;
13                 if (rr != null)//判断是否转换成功
14                 {
15                     rr.chifan();
16                 }
17                 else
18                 {
19                     Console.WriteLine("没转换成功!");
20                 }
21             }
22             foreach (object o in arr)
23            {
24                 Ren rr = o as Ren;
25                 if( o is Ren )//判断o在进入集合之前是不是Ren这个类的
26                 {
27                     rr = o as Ren;
28                 }
29            }

 

多态和接口以及is和as运算符

标签:

原文地址:http://www.cnblogs.com/mazhijie/p/5601689.html

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