社区
C#
帖子详情
我遇到一个有趣的问题!!大家进来看看!!尼玛????
hmw145
2012-08-06 12:24:59
如果看完问题你想这样回答:
1.首先是检查父有没有这样的方法然后才会检查子类有没有怎样的方法。那你就不用留言了!!
2.如果你竟然在回答我栈和堆是怎么样一回事的,那你也不用留言了!!因为栈和堆我懂!!
3.如果你刚写完代码的和心里有问题的哪你也不用留言了,因为你累了!!
以下我的问题:
...全文
3152
77
打赏
收藏
我遇到一个有趣的问题!!大家进来看看!!尼玛????
如果看完问题你想这样回答: 1.首先是检查父有没有这样的方法然后才会检查子类有没有怎样的方法。那你就不用留言了!! 2.如果你竟然在回答我栈和堆是怎么样一回事的,那你也不用留言了!!因为栈和堆我懂!! 3.如果你刚写完代码的和心里有问题的哪你也不用留言了,因为你累了!! 以下我的问题:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
77 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
一羽清宁
2012-08-20
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
当然是调用person.go方法,这和是堆和栈没什么关系,和编译器有关系,编译器可以决定如何调用go方法,如果go是virtual/override方法,那么编译器会这样调用go,到p引用的对象也就是china对象中查询签名为go的方法然后调用它,
如果go不是virtual/override方法,那么编译器根本不会去查询p引用什么对象,直接就调用person.go方法,编译器知道如何调用……
[/Quote]赞同,自己编码验证了一下。
zhoucong1020
2012-08-18
打赏
举报
回复
如果没有父类方法没有标记为abstract或者virtual,子类如果有同名方法,那么你再编译的时候没有注意到编译器给出的警告吗?子类方法隐藏了父类方法,如果是刻意隐藏请使用关键字new
楼主这种用法根本不是重载,而是隐藏,重载只能对abstract或者virtual方法
idd3514276
2012-08-17
打赏
举报
回复
自己也有些浮躁了,谢谢各位前辈给出的宝贵意见
Journey31
2012-08-17
打赏
举报
回复
樓主真是太狂了啊!MVP都沒你屌
wwtmw
2012-08-16
打赏
举报
回复
入门问题
初学的人能谦虚一点吗
人傻且呆但不萌
2012-08-16
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
那么多感叹号, 还提醒不用留言什么的。
没有学过编译原理/操作系统原理/windows内核解析/深入.net.... 只懂些 .net 的皮毛的人, 最容易自大...
多年前,搞c++,有个必读的《深度探索C++对象模型》...读完这些,再过来学.net,就轻松了...
如果LZ读的是C++,也就不会那么浮躁,那么霸道了。(.net,微软降低了程序员的门槛: 半个月,就能让……
[/Quote]
您说的话让我感很惭愧,的确,我太容易满足了
ShoulderLai
2012-08-15
打赏
举报
回复
我不懂数据结构,不懂计算机组成,不懂堆栈等等基础。我只懂一点面向对象的基础。
Person p=new China();如此实例化,的确是p对象引用子类China对象;
那么在China类的构造函数里有隐含的无参构造函数
public China():base()
{
}
先有父类,才会有子类。所以在new China()这块堆内存里,其实也是有Person对象被实例化了。
也就是说同一块里既有China对象,也有Person对象。为了区分调用谁,所以也就有了new,virtual这些东西出来了。
xiaoxia6liu
2012-08-15
打赏
举报
回复
……继承和多态都没搞清楚……我都不知道你是怎么面向对象的……
liunanxuan613
2012-08-15
打赏
举报
回复
c#--应该是c shape,[Quote=引用 56 楼 的回复:]
C#不喜欢学java玩虚的就虚的。。。一般情况覆盖就覆盖。。。不覆盖就不覆盖需要用关键字指明的。。。
还有就是我用的VS2010就没有你说的问题啊!!难道楼主CPU坏了?上图C# code
class Program
{
static void Main(string[] args)
{
Person p = new stu(……
[/Quote]
liunanxuan613
2012-08-15
打赏
举报
回复
java和c++的继承机制应该是一样的,当子类继承父类时,如果有同名的方法(没有virtual关键字),子类是直接覆盖父类的同名方法的。c#的话,没有直接覆盖,而是直接隐藏了父类的同名方法(若同名方法没有virtual关键字)。所以c++是china.go。[Quote=引用 45 楼 的回复:]
不懂,我德C++ 一直是china.go的
[/Quote]
潇雨歇
2012-08-14
打赏
举报
回复
说说我的看法。这和编译什么什么的没关系吧,他就是个运行时问题。.net会在第一次编译的时候会编译成CLR的中间码,运行时经过JIT的即时编译为本地机器吗,并可根据具体的系统/CPU什么的进行编译优化。.net本身是依赖元数据,所以编译期间不一定能真正的确定对象的类型(如泛型),所以也不能确定具体是哪个方法。只有在运行时才能真正的确定类型,并确定调用方法的地址。举个例子,工厂模式中有一种是通过Reflection创建出指定的对象,并返回指定的接口,并寻址方法地址。
很久没看书了,不知道对不对。好像没回答楼主的问题,楼主的问题应该是说运行时.net如何寻址吧。现在手上没具体的手册,不能精确回答。
eRenChina
2012-08-14
打赏
举报
回复
你子类能用父类实例化?
好尴尬啊
2012-08-13
打赏
举报
回复
楼主出来啊 不是很牛气嘛
wluomu
2012-08-13
打赏
举报
回复
这个问题是多态里面的问题,还是自己多写一些代码实验一下,另外这个问题并不难,所以口气不要那么大。
凤凰涅檠
2012-08-13
打赏
举报
回复
走三步,退一步,MARK
bobo5421
2012-08-12
打赏
举报
回复
这不就是多态和动态绑定嘛
whatafuckinglongname
2012-08-11
打赏
举报
回复
[Quote=引用 44 楼 的回复:]
引用 42 楼 的回复:
java默认成员函数都是虚函数,而c#默认成员函数为非虚函数
C# new
C# code
public class ClassA
{
public void A(){}
}
public class DeriveclassA:ClassA
{
public new void A() {}
……
应该是分版本吧,以前需要显示的@ov……
[/Quote]
@override不影响,只是个annotation
指尖微凉丨
2012-08-11
打赏
举报
回复
这个是Visual Studio 2012 RC版
[Quote=引用 60 楼 的回复:]
这是个什么版本的VS?引用 18 楼 的回复:
[/Quote]
fxx3344
2012-08-11
打赏
举报
回复
[Quote=引用 53 楼 的回复:]
楼主似乎是关心内存以及调用方面的,其实没必要,每个编译器,每门语言都可以由自己的处理方式,大致上可能是这样的
[/Quote]
+1 ,我也认为lz可能是在问.net内部机制的问题,而非语言概念上的问题
以下这部分是对古老的面向对象编译器而已的,大家别忙着往.net套
面向对象编译器会把类的方法生成指令块,其所有实例都使用这段指令快处理方法调用;而对实例而言,保存的仅仅是数据而已。
lz的问题中没有override的使用,编译器发现p被声明成Person类型,于是实例p被简单映射到了Person对应的指令块(方法),执行的结果会以Person的方法定义为准。
使用override的方法处理就复杂多了,编译会从p的实际类型(而不是声明的类型)出发,按照继承树查找正确的指令块(方法),然后做映射。
.net的处理机制,我说不太清楚,但可以确认的一点是,指令块的映射不是在编译时做的,人家有clr;你编译出来的压根就不是二进制代码。
hcbzd
2012-08-11
打赏
举报
回复
这是个什么版本的VS?[Quote=引用 18 楼 的回复:]
[/Quote]
加载更多回复(42)
iOS13-Peripheral-Bluetooth
遇到
CBAdvertisementDataTxPowerLevelKey
问题
?解决篇
iOS13更新之后,app关于iPhone作为蓝牙Ble外围设备发送广播时直接崩了,当时内心也是崩溃的,因为在iOS13之前自己做智能硬件开发也已经三四年了,iOS的蓝牙一直很稳定(让安卓的同事羡慕)。
问题
是: “CBAdvertisementDataTxPowerLevelKey”这个字段从那冒出来的我没写啊,因为在iOS13之前写了也没用。然后各种找
问题
后来有个兄弟也加入了
进来
,我们各种...
网页复制不了?右击不了?大威天龙!Java锋哥来出招!
大家好,我是曹
尼玛
; 最近几年,粉丝经常跟我反应说有些网页内容不错,想复制,却复制不了,很郁闷,右击也没效果; 还有的网站良心点,内容能复制,但是复制的内容,最后会多出一段文字信息,比如版权所属信息;心烦; 还有两种变态的,第一种复制的内容包括代码,样式居然没了,那岂不是要把人逼疯吗。 还有一种更变态的是,复制内容,每行的最后,莫名其妙的会多出一些乱码字符;这个就更操蛋了。想去掉的话,还得一行一行处理,好麻烦; 呵呵~~~ hehe~~ he~ 这些雕虫小技~ 竟敢在程序员面前班门弄斧 大威天
面试中
遇到
的
问题
面试经历分享 易美设计 白豆腐
2012年的6月5日 我骑车花了半个多小时的时间 来到翰明 (公司是做金融和政府软件的 全国好几家分公司 贵公司的网站扫过了,非常的安全,独立服务器 且只放
一个
网站,不愧是做金融政府的!惭愧啊!!) 接 我的 是
一个
20几岁的带个黑边框眼镜的可爱小伙 ,他领我到了会议室,让 我等一下! 我环顾了四周,空旷旷的 黑板上还残留着昨日描绘的笔记!等了大概5分钟吧 、、门开了,
进来
一位非常White-c...
《面试官不讲武德》对Java初级程序猿死命摩擦Http协议
前言 我被Hr领进了
一个
小黑屋,让我在这里等面试官,过来一会,一位穿着拖鞋的中年男子走了
进来
,看着他绝顶聪明的发际线,知道这肯定是位大佬,我心里倍感到了压力; 面试官果然不是盖的,刚坐下后就开始立即暴力输出了 面试官:我看你简历上写了熟悉Http协议,当我们使用浏览器访问网址: https://silently9527.cn会发生什么? 我:(这
尼玛
就是怕被搞事情所以没写精通,这也被搞。会发生什么,当然是展示出网页啊,大脑飞速旋转,脖子快断的时候,终于想到面试官可能想要问什么了) 我:英俊潇洒的面试官.
使用ViewPager实现左右“无限”滑动的万年历
有时候就是这样,研究
一个
问题
,一开始想到了
一个
觉得可行的方案,然后去尝试;尝试了很久、很多次,已经要放弃了,关掉电脑心里 想这个需求没办法实现;在去上厕所的路上突然想到了
一个
点子,第二天一试,
尼玛
,搞了这么久的东西,十几二十分钟就解决了...... 这次我
遇到
的是这样
一个
问题
,由于系统的CalendarView不太美观,所以要自己实现
一个
日历的布局;所以想到了使用GridView,然后 ...
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章