關於子類和父類複值問題

      今天寫一個簡單工廠的時候

突然向認真思考一下一個比較細節的用法。

先我稍微介紹下簡單工廠

一般由三部分構成,分別為:

(1)工厂类角色(Creator):

   担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑.工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现
(2)抽象产品角色(Product):

   担任这个角色的类是由工程方法模式所创建的对象的父类,或它们共同拥有的接口.抽象产品角色可以用一个接口或抽象类实现.
(3)具体产品角色(Concrete Product)角色:

   工程方法模式所创建的任何对象都是这个角色的实例,具体产品角色是由一个具体类实现.

在我的案例中

有工廠類nameFac(string str),並且具有public 函數getName1 返回類型為Name

抽象類  Name()

具體類  FName:Name

具體類  SName:Name

其中nameFac通過輸入的str返回不同的具體類  FName或SName

 

調用時代碼為

Name t2 = NameFac.getName1("xxxyyy");
Console.WriteLine(t2.getFRname().ToString());

 

我們且不討論具體的實現

代碼

Name t2 = NameFac.getName1("xxxyyy");

 

其左邊t2為Name 類型,getName1()返回類型為Name

但是getName1

存在代碼

reture new FName();

reture new SName();

也就是說,,,實際上getNam返回的地是FName或SName

而並不是其定義時候的Name

 

以前使用的時候我並沒有認真考慮今天就深入思考了下

 

后來想起之前,

關於值類型,與引用類型知識

參考(http://www.cnblogs.com/anytao/archive/2007/05/28/must_net_09.html)

關於子類,父類創建相關知識

參考(http://www.cnblogs.com/anytao/archive/2007/09/10/888985.html)

后終于明白怎麽囘事了

 

所謂new類子類即分是做了幾個動作

1、在堆棧中申請一個空間,其大小根據自己包含的所有類型的大小總合(父類大小+子類大小)

2、運行父類初始化方法

3、運行子類初始化方法

即是說,我們可以假設申請了一個内存空間,

為a0001-a0100其中

父類佔a0001-a0020

子類佔a0021-a00100

 

這樣我們的研究目標中

Name t2 = NameFac.getName1("xxxyyy");

”NameFac.getName1("xxxyyy");“部分已經明白了,

 

剩下的就是“Name t2 =”這個部分

首先我們應該思考最基礎的東西,這是一個什麽動作

對這個是一個對引用類型複值得動作

而我們都知道,,,把一個引用類型輔值給另外一個引用類型是怎麽一會事呢?

這下就很清楚了,,是把一個指針值複給另外一個引用類型

 

這樣剩下的就很簡單了

這個Name t2 = NameFac.getName1("xxxyyy");

說白了就是  t2=a0001

而 t2類型是Name所以只會讀取a0001-a0020

這這句話看起來就沒有任何問題了

 

其實只是個很基礎的問題,只是因爲我對基礎的知識不掌握的不夠深刻,無法貫通導致的無法理解其含義。

 

還是需要多多補充基礎知識阿

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值