Csharp多态的实现(抽象类)
1.什么是抽象类
抽象类是虚拟的类,不能创建对象,用abstract修饰,在子类中用override进行重写
抽象类中可以存放抽象方法,属性,也可以存放非抽象方法,属性(这个在下面的代码可以看出来的)
非抽象类中只能存放非抽象的方法(这个可以在下面的代码中可以看出类)
如果子类也是抽象类,那么父类中所有的抽象方法,属性不必全部实现; 如果子类不是抽象类,那么父类中所有的抽象方法,属性必须全部实现(如果不实现会报错,这个也可以观察出来)
2.下面来看一下代码的实现,来点干的
//先定义一个Car父类
abstract class Car
{
private string _name;//用private修饰的,只能在父类中使用
public string name//可以再子类中继承使用
{
get
{
return _name;
}
set
{
_name = value;
}
}
public abstract void say();//抽象方法,必须在子类中重写
public void start()//可以再子类中继承使用
{
Console.WriteLine("我是一辆车,我现在启动了");
}
} //定义一个Benz类,继承Car
class Benz:Car
{
public override void say()//在子类中重写
{
Console.WriteLine("我是大奔,我叫{0}",name);
}
} //定义一个BMW类,继承Car
class BMW:Car
{
public override void say()//在子类中重写
{
Console.WriteLine("我是宝马,我叫{0}",name);
}
}
3.如果使用多态
定义一个父类的变量 Car b = new Benz();
b = new BMW();
先装的是奔驰类,后来装的是宝马类,装那个类,表现出那个类的特征,这就是多态
3.1 一个父类可以装不同的子类,从而实现不同的形态
3.2 当一个父类被多个类继承的时候,子类中的方法很多,而父类中的方法无法确定的时候,在父类定义个抽象方法,然后在子类中实现就可以了,在使用多态的时候,也可以直接使用
Csharp多态的实现(抽象类)的更多相关文章
- Csharp多态的实现概述
(1)什么是多态, 多态就是一个类表现出多种不同的形态, 他的核心是子类对象作为父类对象使用 (2)怎么实现多态, 在Csharp中,可以用接口, 虚方法, 抽象类实现多态,当然,不管是这三种的那一个 ...
- Csharp多态的实现(虚方法)
1.什么是抽象类 1.1虚方法是用virtual修饰,在子类中用override进行重写 1.2虚方法是一个方法,放在类里面(可以再下面的代码中看到) 1.3虚方法可以 重写,也可以不重写(这个可以再 ...
- Csharp多态的实现(接口)
1.什么是接口 接口可以看做是一个标准, 所有继承的子类需要按照接口中声明的方法来 接口用关键字 interface 修饰,接口的名字一般是I.........able ,表示我有什么能力 接口一般是 ...
- 深入理解OOP(四): 多态和继承(抽象类)
在本文中,我们讨论OOP中的热点之一:抽象类.抽象类在各个编程语言中概念是一致的,但是C#稍微有些不一样.本文中我们会通过代码来实现抽象类,并一一进行解析. 深入理解OOP(一):多态和继承(初期绑定 ...
- 初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)
JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM, ...
- C++ (P199—P211)多态 虚函数 抽象类
在介绍多态之前,先回忆:赋值兼容原则.虚基类.二义性.派生类如何给基类赋值等知识. 在赋值兼容原则中:父类对象的指针赋给基类的指针或者父类的对象赋给基类的引用,可以通过强转基类的指针或者引用变为父类的 ...
- 深入浅出OOP(四): 多态和继承(抽象类)
在本文中,我们讨论OOP中的热点之一:抽象类.抽象类在各个编程语言中概念是一致的,但是C#稍微有些不一样.本文中我们会通过代码来实现抽象类,并一一进行解析. Abstract Classes 在微软的 ...
- 【Java基础】【09面向对象_多态&抽象类&接口】
09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...
- 06 面向对象:多态&抽象类&接口&权限修饰符&内部类
多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...
随机推荐
- UVa 1583 Digit Generator(数学)
题意 假设a加上a全部数位上的数等于b时 a称为b的generator 求给定数的最小generator 给的数n是小于100,000的 考虑到全部数位和最大的数99,999的数位和也才45 ...
- 从头开始-06.C语言中预处理指令
预处理指令 不带参数的宏定义: 格式: #define 宏名 值 作用:提高代码的可读性 在程序编译前把所有出现宏名标示的位置都替换为定义宏的时候,宏名后面的值 带参数的宏定义 格式 #define ...
- (原) Jquery 判断移动设备是IOS / Android系统
var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...
- (六)Android中Service通信
一.启动Service并传递参数 传递参数时只需在startService启动的Intent中传入数据便可,接收参数时可在onStartCommand函数中通过读取第一个参数Intent的内容来实现 ...
- HTML——框架
1.frameset <html> <frameset cols="25%,50%,25%"> <frame src="frame_a.ht ...
- SQL Server 已提交读快照 测试
1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN ' WHERE ...
- oracle11g用户名密码不区分大小写
oracle 11g 以前的版本的用户名和密码是不区分大小写的; oracle 11g 用户名和密码默认区分大小写,可更改alter system set sec_case_sensitive_log ...
- GetRect:通过提供点和宽度返回对应矩形RECT
RECT GetRect(int x,int y,int width,int height); 描述:通过提供点和宽度返回对应矩形RECT 返回:矩形结构RECT 参数: x:X轴坐标 y:Y轴坐标 ...
- The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. 异常
异常信息如下: The Struts dispatcher cannot be found. This is usually caused by using Struts tags without t ...
- Web页面在手机上显示过大问题
网上抄来了,自己也备忘下:增加<meta name="viewport" content="width=device-width, initial-scale=1. ...