base关键字
base关键字 专门用来在子类访问父类成员
base.标识符:“.”调用父类同名属性、同名函数、构造函数
1 (1)父类person 2 public class Person 3 { 4 public Person() 5 { 6 Console.WriteLine("Person()"); 7 } 8 9 public Person(string name, int age) 10 { 11 Console.WriteLine("Person(string name, int age)"); 12 this.name = name; 13 this.age = age; 14 } 15 16 protected string name; 17 protected int age; 18 protected string strWords = string.Empty; 19 20 public void SayHi() 21 { 22 Console.WriteLine("大家好,我叫{0},我今年{1}岁了{2}", name, age, strWords); 23 } 24 25 (2)子类student 26 public class Student:Person 27 { 28 //子类构造函数会自动调用父类无参构造函数 29 public Student(string name, int age) 30 { 31 this.strWords = strWords; 32 } 33 //子类构造函数可以显示的调用父类构造函数 34 public Student(string name, int age, string strWord) 35 : base(name, age)//显示的调用 父类构造函数 36 { 37 this.strWords = strWords; 38 } 39 } 40 41 (3)子类teacher 42 public class Teacher:Person 43 { 44 double salary; 45 46 public Teacher(string name, int age, string strWord) 47 { 48 base.name = name; 49 base.age = age; 50 base.strWords = strWords; 51 //base.name //base 只能访问到父类的非私有成员 52 //this.salary//this可以访问到子类的所有成员和父类的非私有成员 53 }
a)base
调用父类中非私有的成员(调用成员,父类)base点不出子类独有成员。
调用父类中的构造函数(调用构造函数,父类)
当调用从父类中继承过来的成员的时候,如果子类没有重写则this.成员;与base.成员,没有区别。
b)如果子类重写了父类成员,则this.成员;调用的是子类重写以后的。base.成员;调用的依然是父类的成员。
c)子类构造函数默认调用父类的无参构造函数;
d)如果父类没有无参构造函数,则必须指明调用父类哪个构造函数
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么构造函数需要尽可能的简单
· 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 【保姆级教程】windows 安装 docker 全流程
· 基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
· 由 MCP 官方推出的 C# SDK,使 .NET 应用程序、服务和库能够快速实现与 MCP 客户端
· 电商平台中订单未支付过期如何实现自动关单?
· X86-64位简易系统开发 - 从BIOS阶段开始