C#关键字 new,this,base

一,new:1.创建对象 (创建对象实际上干了以下三件事)

---在堆中开辟空间   (注:值类型存放在栈中,引用类型存放在堆中)

----在开辟的堆空间中创建对象

---调用对象的构造函数

例:Person p=new Person();//Person是类

2.做修饰时,显示的隐藏父类的成员,即当子类和父类有相同名称的成员时,在子类成员中使用new修饰能隐藏掉父类的同名成员

例:

public class Person
{

public void SayHello()
{
Console.WriteLine("我是老师");

}

}
public class Student : Person//继承于person
{
public new void SayHello()//使用关键字new显示的隐藏父类的同名成员
{
Console.WriteLine("我是学生");
}

}

class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.SayHello();
Person p = s;//里氏转换,通过父类访问到父类的被隐藏的成员

p.SayHello();

Console.ReadKey();

}

}

测试的结果:

        我是学生

        我是老师

//可见,要想访问被隐藏的基类的成员变量、属性或方法,办法就是将子类造型为父类,然

//后通过基类访问被隐藏的成员变量、属性或方法。

二,this:1.代表当前类对象

2.显式的调用自己的构造函数

时间: 2024-10-07 04:39:25

C#关键字 new,this,base的相关文章

c#关键字和常用类型表快查

类型 字节 取值范围 说明 bool 1 true/false/null 布尔类型 char 2 0x0000~0xffff Unicode 16 位字符 byte 1 0~255 无符号的 8 位整数 sbyte 1 -128 到 127 8 位带符号整数 short 2 -32,768 到 32,767 有符号 16 位整数 ushort 2 0~65535 无符号 16 位整数 int 4 -2,147,483,648 到 2,147,483,647 带符号的 32 位整数 uint 4

.NET重新学习 1 关键字

一.base关键字 可以通过base关键字访问上一级父类方法的访问.静态static函数无法调用base 二.new 关键字new new有2个作用. new运算符   用来分配内存空间和初始化对象. new修饰符   微软官方说明:可以显式隐藏从基类继承的成员,该成员的派生版本将替换基类版本.(以前一直不在乎这种场合,因为编译器就提示警告)他和overrider有什么区别呢? /// <summary> /// 关键字 /// </summary> public class Ke

C#基础知识(base、this、new、override、abstract、virtual、static)

前言 本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base.this.new.override.abstract.virtual以及针对static字段和static构造函数之间的执行问题. base关键字 base 关键字用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数.实例方法和实例属性访问器中: 调用基类上已被其他方法重写的方法. public class Father { public virtual void Say()

《C#图解教程》读书笔记之四:类和继承

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.万物之宗:Object (1)除了特殊的Object类,其他所有类都是派生类,即使他们没有显示基类定义. (2)一个派生类只能有一个基类,叫做单继承. 二.基类那点事儿 (1)如何在派生类中访问基类成员?使用base关键字,如base.Field1: (2)如何屏蔽基类中某个方法或成员?在派生类定义的成员定义前使用new关键字: (3)如何使用基类的引用?这里可以借鉴里氏替换法则,创建指向派生类的基类对象. 三.小

C++ 成员函数的重载与覆盖与隐藏

重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类): (2)函数名字相同: (3)参数相同: (4)基类函数必须有 virtual 关键字. 函数 Base::f(int)与 Base::f(float)相互重载,而 Base::g(void) 被 Derived::g(void)覆盖. #include <ios

工作中能用到的基础知识总结(二)

简介 继承.封装和多态是面向对象编程的重要特性.要想运用好,就必须熟悉这三种特性,本篇说说我对封装.继承和多态相关的知识总结. 知识点 一.访问修饰符 C#中类及类型成员修饰符有五类:public,private,protected,internal,protected  internal. public:类及类型成员的修饰符(任何地方该类都可以被访问到): private:类型成员的修饰符(只能在同一个类或方法中使用,即使是类的实例也不能访问它的私有成员): protected:类型成员的修饰

(原创)c#学习笔记10--定义类成员02--类成员的其他议题02--调用重写或隐藏的基类方法

10.2.2  调用重写或隐藏的基类方法 无论是重写成员还是隐藏成员,都可以在派生类的内部访问基类成员.这在许多情况下都是很有用的,例如: 要对派生类的用户隐藏继承的公共成员,但仍能在类中访问其功能. 要给继承的虚拟成员添加实现代码,而不是简单地用重写的新执行代码替换它. 为此,可以使用 base 关键字,它表示包含在派生类中的基类的实现代码(在控制构造函数时,其用法是类似的,如第9所述),例如: public class MyBaseClass { public virtual void Do

C#入门基础三

封装:简化用户接口,隐藏实现细节. get{return 属性值:} set{属性值 = value:} 继承:子类继承父类所有非私有成员.继承具有传递性,单根性. 隐式继承:用引号(:)实现. 显示继承:关键字(:base)实现. 显示继承与隐式继承的区别: 简单来说就是说 如果继承的一堆接口中 有2个或者2个以上的接口有同名的属性/方法,而它们又是不同的功能的话,你就应该显示继承接口 反过来 随意(一般用隐式,因为可以偷懒) 如果你很犹豫应该用哪一种 而又必须保证不会出问题 直接使用显式 方

.NET初学者推荐课程 asp.net错误代码大全

错误 CS0001 编译器内部错误错误 CS0003 内存溢出错误 CS0004 提升为错误的警告错误 CS0005 编译器选项后应跟正确的参数错误 CS0006 找不到动态链接的元数据文件错误 CS0007 .Net 环境初始化错误错误 CS0008 从文件中读取元数据错误错误 CS0009 不能打开元数据文件错误 CS0010 名字空间与类型的声名不能同名错误 CS0011 引用的类找不到基类错误 CS0012 找不到引用类型的定义错误 CS0013 向文件中保存元数据时发生未知错误错误 C

C#定义类成员

1.成员定义 public--成员可以由任何代码访问. private--成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字). internal--成员只能由定义它的程序集(项目)内部的代码访问. protected--成员只能由类或派生类中的代码访问. 后两个关键字可以合并使用,所以也有protected internal成员.他们只能有项目(更确切地讲,是程序集)中派生类的代码来访问. 也可以使用关键字 static 来声明字段.方法和属性,这表示它们是类的静态成员,而