同名笔记《你必须知道的.net》(二) 继承的本质与引用类型内存机制
2012-02-07 12:49
344 查看
上一篇博文也说了一点关于内存的知识,但是不详尽,这篇博文彻底的理解了从.net层面理解 引用类型的内存分配--->引用类型的堆内的工作,以及继承的本质。
(说的不对,大家指正)
继承
面向对象:实现单继承和接口多继承
对于.net通过访问权限的修饰符控制安全:public protected internal private
抽象方法和虚方法才可以被重写override,而且虚方法不能是private才可以被重写,抽象方法必须是public.
接口的默认是公共抽象的方法,而且被继承了,必须被实现。
1.继承机制的执行
View Code
疑惑3:bird2.ShowType();//Type is Chicken,为什么,这里就没有就近原则?
答:这里创建的是 Chicken对象,所以加载父类Bird方法表和自己的方法表,如果有重写就覆盖,这里覆盖了,所以没有使用就近原则。
上面 bird2.type,因为没有被覆盖,编译器认为是2个不同的变量,所以就近原则。
(说的不对,大家指正)
继承
面向对象:实现单继承和接口多继承
对于.net通过访问权限的修饰符控制安全:public protected internal private
抽象方法和虚方法才可以被重写override,而且虚方法不能是private才可以被重写,抽象方法必须是public.
接口的默认是公共抽象的方法,而且被继承了,必须被实现。
1.继承机制的执行
View Code
public abstract class Animal { public abstract void ShowType(); public void Eat() { Console.WriteLine("Animal always eat."); } } public class Bird : Animal { public string type = "Bird"; public override void ShowType() { Console.WriteLine("Type is {0}", type); } private string color; public string Color { get { return color; } set { color = value; } } } public class Chicken : Bird { public string type = "Chicken"; public override void ShowType() { Console.WriteLine("Type is {0}", type); } public void ShowColor() { Console.WriteLine("Color is {0}", Color); } } public class TestInheritance { public static void Main() { Bird bird2 = new Chicken(); Console.WriteLine(bird2.type);//bird 就近原则 bird2.ShowType();//Type is Chicken,为什么,这里就没有就近原则? } }
疑惑3:bird2.ShowType();//Type is Chicken,为什么,这里就没有就近原则?
答:这里创建的是 Chicken对象,所以加载父类Bird方法表和自己的方法表,如果有重写就覆盖,这里覆盖了,所以没有使用就近原则。
上面 bird2.type,因为没有被覆盖,编译器认为是2个不同的变量,所以就近原则。
相关文章推荐
- go语言笔记——切片底层本质是共享数组内存!!!绝对不要用指针指向 slice切片本身已经是一个引用类型就是指针
- 值类型vs引用类型内存机制
- jvm内存JVM学习笔记-引用(Reference)机制
- 黑马程序员_学习笔记10——引用类型与值类型,继承,访问修饰符,里氏转换
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
- 内存管理机制-Java中的引用类型
- JavaScript高级程序设计之变量、作用域和内存问题之基本类型和引用类型的值第4.1讲笔记
- 内存探寻1之——值类型和引用类型的内存分配机制
- 6、Java类、对象、构造器、引用类型内存基本知识、引用类型值传递
- 第三章 JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程
- c++中函数中变量内存分配以及返回指针、引用类型的思考
- C学习笔记2-int类型数据在内存中的存储形式
- C#学习笔记 2 初识引用类型
- C#中的ref,out,值类型,引用类型的笔记
- 厨娘的Java笔记(一):强制类型转换之引用转换
- iOS内存管理机制解析之MRC手动引用计数机制
- JS高级程序设计笔记(五):引用类型
- JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
- 【VC编程】笔记2--SDK编程的模板程序/MFC消息映射机制的本质解析
- JavaScript引用类型(笔记)