博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net学习 第2季03 C#面向对象 继承
阅读量:5081 次
发布时间:2019-06-12

本文共 1385 字,大约阅读时间需要 4 分钟。

.Net 视频学习第2季 C#面向对象

 

面向对象 继承

编程习惯,为每一个类都开一个新的cs类文件。

public class Person{    public string Name {
get;set;} public int Age {
get;set;} public string Gender {
get;set;} public void walk() { Console.WriteLine("I walk!"); }}public class Student:Person{}

 

类的继承具有单根性和传递性,查看各个类之间的关系可以右键项目名称--->视图--->查看类图。

子类(派生类)能继承(使用)父类的属性和方法,但不能使用父类的私有字段。本质上子类对象在创建时创建了一个父类对象(因此可以使用其属性和方法)。默认情况下,子类对象创建时,会先调用父类的无参的构造函数。因此如果父类中定义了有参的构造函数(从而默认的无参构造函数被销毁)而又没有自定义无参构造函数,子类就无法默认地调用父类的无参构造函数来创建父类对象,从而报错。

解决办法一:父类中自定义无参构造函数(如果构造了有参构造函数的话)---这不是常见做法,因为基本上没有意义

解决办法二:在子类创建父类对象的时候,显式调用父类的有参构造函数,使用关键字 :base()

public class Person{    public string Name {
get;set;} public int Age {
get;set;} public string Gender {
get;set;} public void walk() { Console.WriteLine("I walk!"); } public Person(string name, int age, string gender) { this.Name = name; this.Age = age; this.Gender = gender; } }public class Student:Person{ public Student(string name, int age, string gender, int id) :base(name, age, gender) { this.Id = id; } public int Id {
get;set;}}

这样当new Student()的时候,执行public Student(params),会先调用父类的public Person(params)。

Object 是所有类的基类。

如果子类定义了和父类方法同名的方法,则子类中定义的方法会自动隐藏掉从父类继承过来的方法。如果是有意隐藏,可以在访问修饰符(例如public)和返回值类型(例如void)中添加关键字new。

转载于:https://www.cnblogs.com/cyrus-ho/p/4146582.html

你可能感兴趣的文章
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>