一.继承

C#中继承的规则

1:继承是可传递的 A:B   B:C

2:派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。

3:构造函数和析构函数不能被继承

4:如果派生类定义了与基类成员同名的新成员,就可以重载或覆盖基类的成员

5:类可以定义虚方法、虚属性以及虚索引器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。另外,类也可以定义静态方法、静态属性和静态索引器。

6:派生类只能从一个类中继承,可以通过接口实现多重继承

Base 关键字=》

1 在派生类中使用 base.方法名  调用基类的方法

2 也可以在派生类的构造函数处  使用 public 派生类名(params):base(params){;;}调用基类的构造函数

二 多态

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类重载基类中的虚函数型方法来实现

(1)编译时的多态性:编译时的多态性通过重载来实现。

  (2)运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中,运行时的多态通过虚成员实现。

1、虚方法的重载

在类的方法前加上关键字virtual,则该方法被称为虚方法。通过对虚方法的重载,实现在程序运行过程中确定调用的方法。需要注意的是这里所讲的重载与前面所讲的通过参数类型与参数个数的不同实现重载是不同的。

虚方法的重载实例1:

using System;

using System.Collections;

namespace 笔记

{

    class A

    {

        public void F() { Console.WriteLine("A.F"); }

        public virtual void G() { Console.WriteLine("A.G"); }

    }

    class B : A

    {

        new public void F() { Console.WriteLine("B.F"); }//对基类同名方法覆盖

        public override void G() { Console.WriteLine("B.G"); }//重载

    }

    public class Test

    {

        public static void MMain()

        {

            B b = new B();

            A a = b;

            a.F();

            b.F();

            a.G();

            b.G();

        }

    }

}

  

程序运行结果:

A.F

B.F

B.G

B.G

在A在定义了提供了非虚方法F和虚方法G,派生类B则对方法F实现覆盖,对虚方法G实现了虚方法的重载。“A a=b”实际上a仍旧是一个b对象。

2、抽象类与抽象方法

     抽象类是一种特殊的基类,它不能被实例化,只能作为基类,由其他类继承。抽象类的定义使用关键字abstract。如将Spahe类定义为抽象类:

public abstract class Shape

{

}

在抽象类中也可以使用关键字abstract定义抽象方法,要求所有的派生非抽象类都要重载实现抽象方法。引入抽象方法的原因在于抽象类本身是一种抽象的概念,有的方法并不要具体的实现,而是留下来让派生类来重载实现。

Shape类中的GetArea方法本身没什么具体的意义,而只有用于派生类Circle类和Rectangular才可以计算具体的面积。

抽象方法定义为:public abstract double GetArea();

则派生类重写实现为:public override double GetArea() { … }

C#.NET面向对象(语法点)的更多相关文章

  1. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  2. iOS - Swift 面向对象语法

    1.面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析.如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块.每一个解决的步骤可能是一行或者几行代码,也可能是一 ...

  3. OC中的面向对象语法

    一. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 打开电脑 播放电 ...

  4. 《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)

    想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧. 相关内容如下: 一.访问修饰符 二.getter/setter方法 三.构造方法 四.super和this 五.s ...

  5. OC中的面向对象语法4

    一. 继承 1. 继承的基本用法 l 设计两个类Bird.Dog // Bird的声明 @interface Bird : NSObject { @public int weight; } - (vo ...

  6. OC中的面向对象语法3

    一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西 ...

  7. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  8. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

  9. js面向对象(构造函数与继承)

    深入解读JavaScript面向对象编程实践 Mar 9, 2016 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术. 对JavaScript而言,其 ...

随机推荐

  1. json返回数据拼接HTML

    <div class="box-lists">  </div> $.ajax({ url: 'AjaxPage/AjaxHandler.ashx', typ ...

  2. C学习笔记 - 指针

    指针与数组 ,,,,}; int *p; p = a; printf("*a = %d\n",*a); printf("*p = %d\n",*p); prin ...

  3. C#操作Excel总结

    0. 导入命名空间:  1 2 3 4 using Microsoft.Office.Core; using Microsoft.Office.Interop.Excel; using System. ...

  4. Struts2中的ActionContext

    ActionContext(Action上下文) ActionContext介绍 通过上面用户注册例子的学习,我们知道Xwork与Web无关性,我们的Action不用去依赖于任何Web容器,不用和那些 ...

  5. 一大坨GoogleAPI的学习笔记之一(oAuth2.0)

    官方文档地址:https://developers.google.com/accounts/docs/OAuth2InstalledApp 最近Ubuntu下VGA接口无端的不能用了,木有心情翻译了, ...

  6. easyui的combobox将得到的数据设定为下拉框默认值和复选框设定默认值

    通过easyui做了一个表,表里是从数据库拿到的数据. 现在双击某一行,通过点击行的id取到这一行的所有数据,现在需要修改这些得到的数据, 其中部分数据是<select>这个选择的, 问题 ...

  7. Android实现点击事件的4种方式

    一.通过在activity_main.xml中,按钮button控件中添加onclick事件实现 在   activity_main.xml 对应的按钮Button中加入下面红色事件 <Butt ...

  8. js前台获取list的demo

    后台 bannerlist=homePageService.searchBanner(bannerVO); // 注意这里的Gson的构建方式为GsonBuilder,区别于test1中的Gson g ...

  9. [TYVJ] P1004 滑雪

    滑雪   背景 Background 成成第一次模拟赛 第三道   描述 Description     trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示 ...

  10. java中Timer计时器使用

    1.新建计时器Timer对象 2.给计时器安排任务,schedule方法 3.取消计时器中分配的任务,purge方法 4.终止计时器,cancel方法 注意:如果计时器已经终止,还要给计时器安排任务, ...