base和this的用法
【意义】
this:指当前类,this调用当前类的属性,方法,包括构造函数的方法,继承本类的构造函数
base:指当前类的父类,可调用父类的非私有属性,方法,继承父类的构造函数括号里的参数
【用处】
一:this的用处
1.限定被相似的名称隐藏的成员,方法或函数(多数用在构造函数中)
class Person
{
private string name;
public Person(string name)
{
this.name = name;
}
}
由于this.name中的name和入参name的名称一样,即被入参隐藏了,所以要用this限定name是本类的属性
2.将自己this对象作为参数传递给其它方法
class Teacher
{
public void tshow()
{
Console.WriteLine("我是老师!");
Console.WriteLine(this);//显示的是本类的类名
}
}
3.声明索引器
private int _index;
public int this[int index]
{
get { return _index; }
set { _index = index; }
}
二:base的用处(base实现了多态)
1.在子类中通过base调用父类的构造函数,即在子类初始化时和父类进行通信。
class Program
{
static void Main(string[] args)
{
Person p = new Person("小李");
p.show();
Teacher t = new Teacher("小刘",);
t.tshow(); Console.Read();
}
}
class Person
{
protected string name;
public Person(string name)
{
this.name = name;
}
public void show()
{
Console.WriteLine("我属于人类!");
}
}
class Teacher:Person
{ public Teacher(string name,int age)
: base(name)
{
this.Age = age;
}
private int _age;
public int Age
{
get { return _age; } //读
set { _age = value; } //写
}
public void tshow()
{
Console.WriteLine("我是学生{0}{1}!",name,Age);
}
}
2.调用基类上已被其它方法重写的方法
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.show();
Teacher t = new Teacher();
t.show();
Console.Read();
}
}
class Person
{
public virtual void show()
{
Console.WriteLine("我属于人类");
}
}
class Teacher:Person
{
public override void show()
{
base.show();
Console.WriteLine("我是老师");
}
}
.调用基类的构造函数
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.show();
Teacher t = new Teacher();
t.tshow();
Console.Read();
}
} class Person
{
public void show()
{
Console.WriteLine("我属于人类");
}
}
class Teacher:Person
{
public void tshow()
{
base.show();
Console.WriteLine("我是老师");
}
}
【注】
在多层继承中:
1>有重载,base指向直接继承的父类
2>无重载,base可指向任意上级父类
【总结】
不能在静态方法中引用this和base,因为当类第一次被加载的时候,静态成员已经被加载到静态存储区,此时类的对象还有可能能没有创建,而this和base访问的都是类的实例,也就是对象,而静态成员只能由类访问,不能由对象访问,所以静态方法中不能调用类成员字段。
base和this的用法的更多相关文章
- EasyUI中Base(基础)的基本用法
EasyUI中Base(基础)的用法 一.Base(基础) 1.parser 解析器 2.easyloader 简单加载 3.draggable 拖动 4.droppable 放置 5.resizab ...
- C# base和this的用法
/** this关键字* this关键字引用类的当前实例* 注意:静态成员方法中不能使用this关键字,this关键字只能在实例构造函数.实例方法或实例访问器中使用*/ /** base关键字* ba ...
- C#中default 、base 、this关键字用法简介
C#中default关键字用法简介 default 关键字可在switch语句或泛型代码中使用.switch语句:指定默认标签.泛型代码:指定类型参数的默认值.对于引用类型为空,对于值类型为零swi ...
- c#基础学习汇总----------base和this,new和virtual
base和this是c#中的两访问关键字,目的是用于实现继承机制的访问操作,来满足对对象成员的访问,从而为多态机制提供更加灵活的处理方式. 在看<你必须知道的.Net>一书中有一个例子很好 ...
- base标签
我们扒取到网站源码很多时候发现路径是采用相对路径,这时候我们就需要采用base标签了,用法非常简单, <base href="我们扒取网站的域名"/> 这时相对路径就相 ...
- Java进击C#——语法之面向对象
本章简言 上一章笔者讲到关于ADO.NET相关的知识,知道了如何去访问数据库.本章将来讲关于面向对象的思想.不管在JAVA还是在C#面向对象思想的重要性都是占了一个很大的成份.往往他就像呼吸一样子,更 ...
- 使 SortList 实现重复键排序
SortList 默认对按Key来排序,且Key值不能重复,但有时可能需要用有重复值的Key来排序,以下是实现方式: 1.对强类型:以float为例 #region 使SortList能对重复键排序 ...
- saltstack实战4--综合练习1
规范配置管理 实际工作中可能会有现网环境,基线环境,开发环境. 需要使用saltstack统一管理.机器多了,业务多了,可能配置文件存放的会比较乱,因此可以统一管理起来 我们可以再加2个目录,test ...
- python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题. 异常:执行 ...
随机推荐
- Activation HDU - 4089(概率dp)
After 4 years' waiting, the game "Chinese Paladin 5" finally comes out. Tomato is a crazy ...
- pm2自动部署
配置pm2自动部署前,请确保已经能够ssh免密登录服务器. 一.创建ecosystem.json { "apps" : [{ "name" : "HT ...
- Codeforces 1037E Trips
原题 题目大意: 有\(n\)个人,起初他们都不是朋友.总共有\(m\)天,每天会有两个人成为朋友.他们计划在晚上出去旅游,对于一个人,有如下两种情况: 1.要么他不出去旅游 2.要么有至少\(k\) ...
- Gym - 101350A Sherlock Bones(思维)
The great dog detective Sherlock Bones is on the verge of a new discovery. But for this problem, he ...
- <六>企业级开源仓库nexus3实战应用–使用nexus3配置yum私有仓库
一两个星期之前,你如果在我跟前说起私服的事情,我大概会绕着你走,因为我对这个东西真的一窍不通.事实上也正如此,开发同学曾不止一次的跟我说公司的私服版本太旧了,许多新的依赖编译之后不会从远程仓库自动缓存 ...
- androidstudio上传代码到git上
1.首先通过git --bare init 在服务端创建好了一个git仓库:假设git仓库在服务端的地址为:/user/lyh/project/test.git 2.androidstudio上点击V ...
- swiper常见问题
swiper是一个比较不错的一个轮播插件,但是呢,有时候在使用的时候也会出现很多的问题,我将我遇到的一些问题解决办法写在下面. 第一个问题:swiper分页器不显示 一般swiper使用分页器都是这样 ...
- Docker下安装Jenkins
Docker安装参见:https://www.cnblogs.com/hackyo/p/9280042.html 安装Jenkins: docker run \ -u root \ --rm \ -d ...
- HTML(一)HTML基础语法(HTML简介,HTML文档声明)
HTML 概念介绍 [概念] (Hyper Text Markup Language)超文本标记语言,是用来描述网页的一种语言 超文本(Hyper Text):不只包括文本,也可以包括图片.链接.音乐 ...
- Web常见漏洞修复建议
一.SQL注入修复建议 1.过滤危险字符,例如:采用正则表达式匹配union.sleep.and.select.load_file等关键字,如果匹配到则终止运行. 2.使用预编译语句,使用PDO需要注 ...