关于继承的一知半解

本文详细解析了C#中的继承机制,包括字段和方法的传递性、子类对父类的扩展方式、虚方法的覆写操作及NEW关键字的作用。并通过具体实例解释了关注对象原则和执行就近原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---恢复内容开始---

 1 namespace 继承
 2 {
 3     public abstract class Animal
 4     {
 5         public abstract void ShowType();
 6         public void Eat()
 7         {
 8             Console.WriteLine("动物吃饭");
 9         
10         }
11     
12     }
13     public class Bird : Animal
14     {
15         private string type = "Bird";
16         public override void ShowType()
17         {
18             Console.WriteLine("Type is {0}",type);
19 
20         }
21         private string color="red";
22         public string Color { get; set; }
23     }
24     public class Chicken : Bird
25     {
26        private string type = "Chicken";
27        public override void ShowType()
28         {
29             Console.WriteLine("Type is {0}",type);
30         }
31         public void ShowColor()
32         {
33             Console.WriteLine("Color is {0}",Color);
34         
35         }
36     
37     }
38     class Program
39     {
40         static void Main(string[] args)
41         {
42             Bird bird = new Bird();
43             Chicken chicken = new Chicken();
44            // Console.WriteLine(chicken.type);
45             //Bird bird1 = new Chicken();
46             //Console.WriteLine(bird1.type);
47             //bird1.ShowType();
48         }
49     }
50 }
View Code

对象创建时的内存分配

 在此我们以Chicken 对象的创建为例,首先是字段,对象一经创建,会首先找到其父类 Bird,并为
其字段分配存储空间,而Bird 也会继续找到其父类Animal,为其分配存储空间,依次类推直到递归
结束,也就是完成System.Object内存分配为止。

根据对象创建过程可见,可以明晰地了解创建对象时,内存的分配情况,与此同时,对继承的本质有了更明确的认识:

  • 继承是可传递的,子类是对父类的扩展,必须继承父类方法,同时可以添加新方法
  • 子类可以调用父类方法和字段,而父类不能调用子类方法和字段。
  • 虚方法如何实现覆写操作,使得父类指针可以指向子类成员
  • NEW关键字在虚方法继承中的阻断作用。

针对下面的对象创建问题,做了简单探索

 Bird bird2 = new Chicken()

这种情况下,bird2.ShowType应该返回什么值呢?而bird2.type又该是什么值呢?
。net专门用于解决这些问题的二个原则:

  • 关注对象原则:调用子类还是父类的方法,取决于创建的对象是子类对象还是父类对象,而不是他的饮用对象。例如Bird bird2=new Chicken()时,我们关注是其创建对象为Chicken类型,因此子类将继承父类的字段和方法,或者覆写父类的虚方法,而不用关注bird2的引用类型是否为Bird。引用类型不同的区别决定了不同对象在方法表中的不同的访问权限。offset(注释),不同类型的指针只能在其特定的地址区域内进行执行,( //Bird bird1 = new Chicken();//Console.WriteLine(bird1.type);若将Bird,Chicken类中type字段的访问权限设置为Private时,很显然此时bird1.type是访问不到数据的;若改变Chicken类的type字段的访问权限设置为Public时,bird1.type是访问不到数据的,处于保护级别;父类类型访问不到子类的字段,可以访问到父类的属性,子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则,自动调用继承父类的方法.),子类覆盖父类时会保证其访问地址区域的一致性,从而解决了不同类型访问具有不同的访问权限问题。
  •  执行就近原则:对于同名字段或方法,编辑器是按照其顺序查找来引用,也就是首先访问离他创建最近的字段或者方法,例如上例中的bird2,是Bird类型,因此会首先访问Bird_type(注意编辑器是不会重新命名的,再次是为了区分),如果type类型设为Public,则在此将返回“Bird”值,这也就是为什么在对象创建时必须将字段按顺序排列,而父类要先于子类编译的原因了。

 参考链接:http://thanksend.blog.163.com/blog/static/5593725720103233932254/

http://blog.youkuaiyun.com/pathuang68/article/details/4096521

---恢复内容结束---

转载于:https://www.cnblogs.com/meiCode/p/3360404.html

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值