C#之类的继承、抽象类和虚方法
类的继承:
写电池的基类:包含条码和箱体码两个字段,含有两个参数的构造函数
class Battery
{
public string _barCode;
public string _boxCode; public Battery(string barcode, string boxcode)
{
this._barCode = barcode;
this._boxCode = boxcode;
} public void ShowInformation()
{
Console.WriteLine("该电池的电池码是{0},箱体码是{1}", this._barCode, this._boxCode);
}
}
类WX27继承Battery基类,添加字段_voltage,并重写构造函数和方法:
class WX27 : Battery
{
public double _voltage;
public WX27(string barcode,string boxcode ,double voltage):base(barcode,boxcode)
{
this._voltage = voltage;
} public new void ShowInformation()
{
Console.WriteLine("该电池的电池码是{0},箱体码是{1},电压是{2}", this._barCode, this._boxCode, this._voltage);
} public void ShowVoltage()
{
Console.WriteLine("万向27的电压为{0}", _voltage);
}
}
测试效果:
WX27 WX = new WX27("", "dsfdsf",3.33);
WX.ShowInformation();
WX.ShowVoltage();
//output-->(不重写ShowInformation)
//该电池的电池码是123456,箱体码是dsfdsf
//万向27的电压为3.33
//output-->(重写ShowInformation)
//该电池的电池码是123456,箱体码是dsfdsf,电压是3.33
//万向27的电压为3.33
抽象类
Car基类,其中的方法不需要提供方法的具体实现,具体的方法在继承的子类体现。
abstract class Car
{
abstract public void Run();
}
BYD类继承Car类,需要重写抽象方法
class BYD : Car
{
public override void Run()
{
Console.WriteLine("BYD汽车可以跑高速!");
}
}
WJ类继承Car类,需要重写抽象方法
class WJ : Car
{
public override void Run()
{
Console.WriteLine("玩具汽车不能跑高速!");
}
}
测试效果:
Car c = new WJ();
c.Run();
c = new BYD();
c.Run(); //output-->
//玩具汽车不能跑高速
//BYD汽车可以跑高速!
虚方法:
构建基类Car,不同于之前的是多了关键字Virtual,如果子类不重写方法Run,则默认调用基类的方法,重写了则调用子类的方法
与抽象类的区别是,虚方法中基类依然提供了具体的方法,可以选择是否重写。
class Car
{
public virtual void Run()
{
Console.WriteLine("车可以跑!");
}
}
子类BYD继承Car类
class BYD : Car
{
public override void Run()
{
Console.WriteLine("BYD汽车不仅可以跑,还可以上高速!");
}
}
测试效果:
Car c = new Car();
c.Run();
c = new BYD();
c.Run(); //output-->
//车可以跑!
//BYD汽车不仅可以跑,还可以上高速!
总结:
对于使用上,类的继承可以让子类拥有数据自己的字段,属性及方法,不同的子类在这一块是可以不一样的。
而类的多态(抽象类、虚方法及接口),则允许使用父类初始化一个子类,用父类直接调用子类的方法,子类的具体实现可以不一样。
继承的子类也可以用基类初始化,但对于子类特有的方法,父类必须通过里氏转化才能调用这些方法。
C#之类的继承、抽象类和虚方法的更多相关文章
- JavaScript实现抽象类与虚方法(六)
一:什么是js抽象类与虚方法 虚函数是类成员中的概念,是只做了一个声明而未实现的方法,具有虚函数的类就称之为抽象类,这些虚函数在派生类中才被实现.抽象类是不能实例化的,因为其中的虚函数并不是一个完整的 ...
- c#多态之抽象类与虚方法的异同点~
多态之抽象类与虚方法的相似点及不同点 : 不同点 1.方法关键字不一样 虚方法的方法关键字是:virtual. 抽象类的方法关键词是:abstract 2.基类的方法是否有方法体/实现 虚方法的方法: ...
- 译:C#面向对象的基本概念 (Basic C# OOP Concept) 第三部分(多态,抽象类,虚方法,密封类,静态类,接口)
9.多态 Ploy的意思就是多于一种形式.在文章开始,方法那一章节就已经接触到了多态.多个方法名称相同,而参数不同,这就是多态的一种. 方法重载和方法覆盖就是用在了多态.多态有2中类型,一种是编译时多 ...
- C#之抽象类、虚方法、重写、接口、密封类
前言 学了这么长时间的C#,我想说对于这个东东还是不是特别了解它,以至于让我频频郁闷.每次敲代码的时候都没有一种随心所欲的感觉.所以不得不在网上搜集一些资料,look 了 look~ 内容 ...
- 抽象类和虚方法、base关键字
微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract ...
- C++类继承中的虚方法
#include <bits/stdc++.h> using namespace std; class A { public: void Show() { cout << &q ...
- C#.NET里面抽象类,接口,虚方法
1抽象类 (1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法 (2) 抽象类不能被实例化 (3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明 ...
- C#通过完整的例子,Get常用的2个套路,理解抽象方法,虚方法,接口,事件
一.理解:抽象方法,虚方法,接口,事件 描述: 1.定义一个抽象父类"People": 要求: 1>3个属性:名字,性别,年龄: 2>一个普通方法"说话&qu ...
- C# 虚方法、抽象方法
一.虚方法(virtual) 作用:当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法. 示例: class Person { public virtual void XXX() { Con ...
随机推荐
- Unity中各个平台的预编译的运用方式
1,unity中官方文档的一个操纵关键词 Platform Dependent Compilation 2,常用的预编译关键词 UNITY_EDITOR 编辑器调用.UNITY_STA ...
- OC-成员变量的作用域
#import <Foundation/Foundation.h> @interface Person : NSObject { int _no; @public // 在任何地方都能直接 ...
- Quickling技术
技术来自facebook,目的是实现ajax的seo友好. 简单来说就是骗爬虫,然后该写js还是写js. 原文在这里:http://www.cnblogs.com/haoming/p/3616326. ...
- java批量生成excel代码分享
package com.test.util; /** * @author ocq * */ import java.io.FileOutputStream; import java.io.IOExce ...
- strtol,strtoll,strtoul, strtoull字符串转化成数字
今天看kafka,有一个参数选项中有: 'S' seq=strtoull(optarg,NULL,10); do_seq=1; 之后查找了下 strtoull 函数的功能,了解如下: ---- ...
- 【转】nanosleep的精度与调度算法的关系 来自:bean.blog.chinaunix.net
nanosleep的精度与调度算法的关系 2011-12-03 13:05:17 分类: LINUX Heartwork前辈在我前一篇博文多线程条件下的计数器(2)中的回复中提到, na ...
- js操作json与字符串相互转换
字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); var obj = JSON.pars ...
- html 图像映射
个人先做而一个例子 <body> <img src="图像映射/enterdesk.com-D69055E2B422567CB273963EA05FF7D4.jpg&quo ...
- MarkDown 语法
1. 代码注释 ` ` 2.标题注释 # 3. 文章注释 ```` ```` 4.超链接 This is [an example](http://example.com/ "Title&qu ...
- EL表达式和JSTL
EL相关概念JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程语言,甚至不是脚本 ...