黑马程序员_Java面对对象——多态
2014-05-11 17:27
169 查看
-------
android培训、java培训、期待与您交流! ----------
一、 什么是多态?
多态的概念:
多态是指一类事物的多种存在形态。
1. 多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2. 多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3. 多态的好处
多态的出现大大的提高程序的扩展性。
4. 多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5. 多态的应用
二、 多态的注意事项:
成员的特点:
1. 成员变量。
编译时:参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中的是否有调用的成员变量,并运行该所属类中的成员变量。
总结成一句话:编译和运行都看等号的左边,引用指向哪个就用哪个。
2. 成员函数(非静态)。
编译时:参考引用型变量所属的类中的是否有调用的函数。有,编译通过,没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
总结成一句话:编译看左边,运行看右边。因为成员函数存在覆盖特性。
3. 静态函数。
编译时:参考引用型变量所属的类中的是否有调用的静态方法。
运行时:参考引用型变量所属的类中的是否有调用的静态方法。
其实对于静态方法,是不需要对象的。直接用类名调用即可。
总之就是编译和运行都看左边。
总结成一句话:非静态成员函数,编译时看左边,运行时看右边;其他都看左边。
多态的总结;
在实际生活着实际处处存在这多态现象,如果把我们看作是一个对象的话,我们在家表现为孩子的形态,学校是学生的形态等等,主要还是看我们的父类有什么,总之就是我们会随着继承的父类变化而变化。
-------
android培训、java培训、期待与您交流! ----------
android培训、java培训、期待与您交流! ----------
一、 什么是多态?
多态的概念:
多态是指一类事物的多种存在形态。
1. 多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2. 多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3. 多态的好处
多态的出现大大的提高程序的扩展性。
4. 多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5. 多态的应用
abstract class Animal { //所有动物都有吃的行为 abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } //猫的特有行为 public void catchMouse() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } //狗的特有行为 public void kanJia() { System.out.println("看家"); } } class Pig extends Animal { public void eat() { System.out.println("饲料"); } //猪的特有行为 public void gongDi() { System.out.println("拱地"); } } class DuoTaiDemo { public static void main(String[] args) { //Cat c = new Cat(); //c.eat(); //Dog d = new Dog(); //d.eat(); //Cat c = new Cat(); /* Cat c1 = new Cat(); function(c1); function(new Dog()); function(new Pig()); */ //Animal c = new Cat(); //c.eat(); function(new Cat()); function(new Dog()); function(new Pig()); } // public static void function(Animal a)//Animal a = new Cat(); { a.eat(); //a.catchMouse(); } /* public static void function(Cat c)// { c.eat(); } public static void function(Dog d) { d.eat(); } public static void function(Pig p) { p.eat(); } */ }
二、 多态的注意事项:
成员的特点:
1. 成员变量。
编译时:参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中的是否有调用的成员变量,并运行该所属类中的成员变量。
总结成一句话:编译和运行都看等号的左边,引用指向哪个就用哪个。
2. 成员函数(非静态)。
编译时:参考引用型变量所属的类中的是否有调用的函数。有,编译通过,没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
总结成一句话:编译看左边,运行看右边。因为成员函数存在覆盖特性。
3. 静态函数。
编译时:参考引用型变量所属的类中的是否有调用的静态方法。
运行时:参考引用型变量所属的类中的是否有调用的静态方法。
其实对于静态方法,是不需要对象的。直接用类名调用即可。
总之就是编译和运行都看左边。
总结成一句话:非静态成员函数,编译时看左边,运行时看右边;其他都看左边。
多态的总结;
在实际生活着实际处处存在这多态现象,如果把我们看作是一个对象的话,我们在家表现为孩子的形态,学校是学生的形态等等,主要还是看我们的父类有什么,总之就是我们会随着继承的父类变化而变化。
-------
android培训、java培训、期待与您交流! ----------
相关文章推荐
- JAVA程序员怎么才能快速查找到学习资料?
- 单链表面试经典问题
- 黑马程序员_浅谈JAVA设计模式
- 读书笔记2014第4本:程序员修炼之道-从小工到专家(第七、八章)
- 腾讯2014实习生基础研究方向笔试面试
- 黑马程序员_JAVA专业术语
- 国内外程序员常去的九大网站
- 插件式的80后程序员是怎样在夹缝中求生存的 推荐
- 黑马程序员_JAVA8新特性
- 程序员在重邮
- 2014 第一季度,作为Java程序员的我读过的书
- 在你月薪三千的时候,做月薪八千的事
- C面试题——读程序题——汇总
- WinCE面试经常被问到的问题
- 黑马程序员――IO篇
- 看NBA巨星成功的模板,思考下程序员提高水平的模板
- 【面试题022】栈的压入、弹出序列
- 2014年腾讯 暑期实习面试经历
- 软考程序员新手易错笔记
- 中国特色程序员的「钱途」