zoukankan      html  css  js  c++  java
  • 多态和接口以及is和as运算符

    多态:

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

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

    虚方法: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            }
  • 相关阅读:
    图片水印(转)
    关于confirm无效的一点记录
    简单blog
    wcf入门示例
    树节点查询
    js cookie
    linux 下 ElasticSearch 和 Logstash 安装
    Elasticsearch 如何快速开放外网访问实战
    利用logstash 把mysql 查询的数据定时自动导入ES (超简版)
    Flash闪屏的问题
  • 原文地址:https://www.cnblogs.com/mazhijie/p/5601689.html
Copyright © 2011-2022 走看看