C#学习笔记(类的继承、重写)

1 隐藏基类的方法

  当基类继承一个(非抽象的)成员时,也就继承了其实现代码。如果继承的成员是虚拟的,就可以用override关键字重写这段实现代码。无论继承的成员是否为虚拟,都可以隐藏这些代码。

  使用下面的代码就可以隐藏:

public class MyBaseClass

{

  public void DoSomething()

  {

    //Base implementation.

  }

  public class MyDerivedClass : MyClass

  {

    public void DoSomething()

    {

      //Derived class implementation, hide base implementation.

    }

  }

}

  尽管这段代码可以正常运行,三十会产生一个警告,说明隐藏了一个基类成员。如果是无意间隐藏了一个需要使用的成员,此时就可以改正错误。如果确实要隐藏该成员,就可以使用new关键字显式的表明意图:

public class MyDerivedClass : MyBaseClass

{

  new public void DoSomething()

  {

    //Derived class implementation,hide base implementation.

  }

}

  其工作方式是完全相同的,但是不会出现警告。此时应该注意隐藏基类成员和重写他们的区别。考虑下面的代码:

public class MyBaseClass

{

  public vritual void DoSometing()

  {

    Console.WriteLine("Base imp");

  }

}

public class MyDerivedClass : MyBaseClass

{

  public override void DoSomething()

  {

    Console.WriteLine("Derived imp");

  }

}

实现如下:
MyDerivedClass myObj = new MyDerivedClass();

MyBaseClass myBaseObj;

myBaseObj = myObj;

myBaseObj.DoSomething();

输出结果:

Derived imp

2 this关键字

  与base关键字一样,this也可以用在类成员的内部,且该关键字也引用对象实例。只是this引用的是当前的对象实例(即不在静态成员中使用this关键字,因为静态成员不是对象实例的一部分)。

  this关机那字最常用的功能就是把当前对象实例的引用传递给一个方法。

  this关键字的另一个常见的用法就是限定本地类型的成员,例如:

public class MyClass

{

  private int someData;

  public int SomeData

  {

    get

    {

      return this.someData;

    }

  }

}

时间: 2024-11-05 19:36:33

C#学习笔记(类的继承、重写)的相关文章

Swift学习笔记十三:继承

一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性 一.基本语法 class Human{ var name :String init(){ name = "human" println(name) } func description(){ println("name:\(name)") } } class Student:Human{ var score = 0 init(){ super.init() name

初探swift语言的学习笔记(类对象,函数)

swift扩展了很多功能和属性,有些也比较奇P.只有慢慢学习,通过经验慢慢总结了. 下面将初步学习一下类的写法. 码工,最大爱好就是看码,而不是文字,太枯燥. // // computer.swift // swiftDemo // // Created by apple on 14-6-8. // Copyright (c) 2014年 fengsh. All rights reserved. /* 写本例子的目的在于快速学习swift类的写法,包括知识点: 1.属性设置 2.构造.释构 3.

JS学习笔记03-初识继承

<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <style type="text/css"> </style> </head> <body> <script type="text/javascr

java学习笔记6--类的继承、Object类

1.类的继承 一种由已有的类创建新类的机制,是面向对象程序设计的基石之一.通过继承,可以根据已有类来定义新类,新类拥有已有类的所有功能 Java只支持单继承,每个子类只能有一个直接父类,父类是所有子类的公共属性及方法的集合,子类则是父类的特殊化,继承机制可以提高程序的抽象程度,提高代码的可重用性 基类(base class),也称超类(superclass),是被直接或间接继承的类 派生类(derived-class),也称子类 (subclass),继承其他类而得到的类,继承所有祖先的状态和行

JavaScript 学习笔记 - 对象和继承

本文是JavaScript The Good Part 有关对象和继承的学习笔记. 1. Object.create 本函数是ECMAScript 5中的标准函数,其作用是用一个对象作为原型来生成另一个对象,可以用以下的code 模拟实现. if(typeof Object.create !== 'function') { Object.create = function(proto){ var F = function(){}; if(typeof proto !== 'object'){ /

C++学习笔记44:继承与派生

类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a .. 如果既可以用组合又可以用派生解决,那首选组合方式: 继承与派生的目的 继承的目的:实现设计和代码的重用 派生的目的:当新的问题出现,原有程序无法解决,需要对原有的程序进行改造 派生类的构成 吸收基类的成员 改造基类的成员 添加新的成员 吸收基类的成员 默认情况下派生类包含了全部的基类中除了构造

非专业码农 JAVA学习笔记 4 java继承和多态

继承和多态 (一)继承的基本概念 子类 extends 父类(超类)(通过继承使用父类公用的变量,方法和属性等非private定义的) (二)类的继承 1.派生子类-获取父类非private定义的方法属性和相关的变量 2.域的隐藏和继承 (1)域的继承-继承所有非私有化的域 (2)域的隐藏-定义跟父类相同的变量,父类的变量就会在子类隐藏,但,子类执行自己的方法还是用的是子类的变量,执行继承父类的方法才自动用上隐藏的域 3.方法的继承和覆盖 (1)方法的继承-继承父类非私有的方法 (2)方法的覆盖

JAVA学习笔记--组合与继承

JAVA一个很重要的功能就是代码的可复用性,代码复用可以大大提升编程效率.这里主要介绍两种代码复用方式:组合和继承. 一.组合 组合比较直观,只需在新的类中产生现有类的对象,新的类由现有类的对象组成,因而称之为组合.这种方法只是复用了代码的功能,而不是它的形式. 1 public class Combine{ 2 public static void main(String[] args){ 3 /* 以下两行代码即体现了组合 */ 4 Combine1 com1 = new Combine1(

Python 笔记 : 类和继承

# -*- coding=  utf-8 -*- # 文件编码定义的语法规则是: coding[:=]/s*([-/w.]+) # 未指定编码将默认为 : ASCII # 同时要注意物理文件的编码也要符合本语言指定的编码 # 更多可参考: http://python.org/dev/peps/pep-0263/ class CBase: '''''资源相关类'''     # 通过CBase.__doc__ 或者类实例.__doc__ 可以输出此说明 counter = 0;    # 这是属于

Java学习笔记--类和对象

1.介绍面向对象的编程 面向对象是现在主流的编程样例,它替代了以前C语言使用时的"结构体",Java是一门面向对象的语言,所以需要熟悉面向对象的概念.面向对象的程序由很多对象组成,每个函数对于用户而言,都有特殊的功能.程序里面的很多对象都可以直接从公共库里面拿来直接用.不用去研究这些功能怎么去实现的.传统的结构的编程由一系列算法步骤来解决问题.一旦这些步骤确定下来,也要同时确定存储数据的方式.也就是数据结构一开始学习的:算法+数据结构=程序. 先决定算法,再决定使用什么样的结构来存储数