- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11讲面向对象编程基础
第11讲 面向对象编程基础(2)
主讲:吕震宇
本讲内容
主要内容
值类型与引用类型
继承与多态
虚方法与方法覆写
重点
继承与多态
虚方法与方法覆写
难点
多态的本质
一、值类型与引用类型
/xuefeng1982/archive/2009/10/09/1579816.html
值类型与引用类型
值类型
直接盛放自身数据
每个变量都有自身值的一份拷贝
对一个值的修改不会影响另外一个值
引用类型
通过存储参照(对象指针)存放数据
多个变量可能指向同一个对象
对一个引用对象的修改可能会影响到另外一个
值类型
堆栈
0
10
堆
b
a
int a=10;
int b;
b = a;
b = 9;
程序代码
10
9
引用类型
堆栈
堆
b
a
Car a = new Car();
Car b;
b = a;
b.Speed = 150;
程序代码
class Car
{
public int Speed=60;
public void Drive();
}
Car at 00A0
Speed = 60
Car at 00A0
Speed = 150
a.Speed 现在也变为150
null
00A0
00A0
什么是 this?
堆栈
堆
a
Car a = new Car();
a.Drive();
程序代码
class Car
{
public int Speed=60;
public void Drive()
{
Speed ++;
}
}
Car at 00A0
Speed : 60
等价于:
Drive(Car this)
{
this.Speed++;
}
等价于:
Drive(a)
{
a.Speed++;
}
Speed : 61
00A0
值类型与引用类型
类型
值类型
引用类型
内置值类型
枚举
结构
数组
对象
接口
Int32
Int64
String
Double
……
enum
struct
Array
object
interface
ID
Owner
Balance
001
Tom
12.56
Account
Account a1 = new Account();
a1.ID = 001;
a1.Owner = Tom“;
类
对象
Interest = 7%
a1
class Account
{
public string ID;
public string Owner;
private double balance;
private static double interest = 0.07;
public void ShowBalance()
{ Console.WriteLine(“Balance is {0},
balance); }
public static double GetInterest()
{ return interest; }
}
double GetInterest()
void ShowBalance()
多个实例共享一个型,但各自存储自己的属性
堆
ID
Owner
Balance
Tom
12.56
堆栈
00A0
a1
Account
Interest = 7%
static double GetInterest()
void ShowBalance()
001
VMT
Account
Interest=0.7
GetInterest()
ShowBalance()
GetInterest()
的具体实现
ShowBalance()
的具体实现
型(类)
值(对象)
VMT
002
Jerry
56.7
00B0
a2
二、继承与多态概况
请开“马自达车”!
请开“奔驰车”!
请开“Volvo车”!
有病!
“C”先生
从“有病”说起
病从何来?
简单的事复杂化了
只要说“开车”就行
病因是什么?
“函数名”是用于区分子程序的标识
因为函数不能重名,所以不能直接“开车”
注:
可以通过指向函数的指针解决问题
#includestdio.h
void PrintHelp();
void DriveVolvo();
void DriveBenz();
void DriveMazda();
main(int argc, char *argvs[])
{
if(argc 2){
PrintHelp();
return;
}
if(strcmp(argvs[1],V)==0)
DriveVolvo();
else if(strcmp(argvs[1], B)=
原创力文档


文档评论(0)