多态polymorphic 内存图的小小示例
2015-10-18 15:47
246 查看
1. 面向对象三大核心思想:
* 封装: 封装,PPP是封装一部分,权限的封装,数据的封装,逻辑的封装.
* 继承: 代码重用.
* 多态:父类的引用指向的子类的对象.
2. 里氏替换原则:能使用父类的地方,一定可以使用子类.
3. 在编译的时候,会把父类的属性,生成父类属性列表,父类的属性有了,这种情况叫编译时绑定;
* 在运行的时候,把子类生成一个对象,也有自己的属性列表,子类的属性就有了,叫运行时绑定.
4. 在程序运行的时候,通过父类属性去调用子类对象的属性,特指成员方法.
*
* 程序开发完成---->编译成类文件------->运行
*
5. super():官方说法是代表了父类型的特征,这里就是指父类里面的属性值列表.
* 具体怎么调用的呢?
* 在运行的时候
* 1. 先遍历父类的属性列表;
* 2. 再遍历子类的属性列表;
* 3. 如果子类有相同,就调用子类的,没有就是用父类的;
* 4. 如果父类中没有所指的属性,直接就报错,子类中根本不去,并且这个错,编译的时候就报错了,编译的时候,子类对象还没有,只能遍历父类的属性列表.
下面是个具体的小例子:
以下是它的内存图:
纯属个人总结,希望园友们和前辈们可以多提提意见,以便让知识更加完整、充实, Thanks!
* 封装: 封装,PPP是封装一部分,权限的封装,数据的封装,逻辑的封装.
* 继承: 代码重用.
* 多态:父类的引用指向的子类的对象.
2. 里氏替换原则:能使用父类的地方,一定可以使用子类.
3. 在编译的时候,会把父类的属性,生成父类属性列表,父类的属性有了,这种情况叫编译时绑定;
* 在运行的时候,把子类生成一个对象,也有自己的属性列表,子类的属性就有了,叫运行时绑定.
4. 在程序运行的时候,通过父类属性去调用子类对象的属性,特指成员方法.
*
* 程序开发完成---->编译成类文件------->运行
*
5. super():官方说法是代表了父类型的特征,这里就是指父类里面的属性值列表.
* 具体怎么调用的呢?
* 在运行的时候
* 1. 先遍历父类的属性列表;
* 2. 再遍历子类的属性列表;
* 3. 如果子类有相同,就调用子类的,没有就是用父类的;
* 4. 如果父类中没有所指的属性,直接就报错,子类中根本不去,并且这个错,编译的时候就报错了,编译的时候,子类对象还没有,只能遍历父类的属性列表.
下面是个具体的小例子:
public class Poly{ public static void main(String[] args){ Animal a1 = new Animal(); a1.eat(); Animal a2 = new Cat(); //多态,创建子类对象 a2.cry(); a2.eat(); //a2.move(); //父类中没有所指的属性,直接就报错,子类中根本不去,并且这个错,编译的时候就报错了,编译的时候,子类对象还没有,只能遍历父类的属性列表 } } class Animal { public void eat(){ System.out.println( "动物吃东西" ); } public void cry(){ System.out.println( "动物会叫" ); } } class Cat extends Animal { public void eat(){ super.eat(); //父类里面的属性列表 System.out.println( "猫吃鱼" ); } public void move(){ System.out.println( "猫走猫步" ); } } class Dog extends Animal { public void eat(){ System.out.println( "狗啃骨头" ); } }
以下是它的内存图:
纯属个人总结,希望园友们和前辈们可以多提提意见,以便让知识更加完整、充实, Thanks!
相关文章推荐
- Android Studio使用疑难问题汇总
- 关于Eclipse 和 IDEA 导入library库文件 的步骤
- 浅谈thrift TVirtual*
- Ubuntu下安装codeblocks步骤
- linux内核链表回顾-(2)
- 学习IT参考路线
- clean room 与 天干物燥
- 守卫者的挑战
- MySQL自学笔记——设置外键约束
- Eclipse build launcher 3具体步骤
- java入门第八天 数组的复制扩容(截取)
- 朴素和KMP模式匹配算法(Java)
- 一、Activity的生命周期
- UI - KVOAndImageDownLoader
- 第三次作业 结对编程
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- 查找被占用端口进程
- VS2010 如何在调试的时候输入参数
- 第六周——数学判断
- eclipse主题与字体设置