黑马程序员——多态的核心思想
2015-10-14 18:50
232 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
/*
多态:可以理解为事物存在的多种体现形式。
人:男人,女人
动物:猫,狗
猫 x= new 猫();
动物 x= new 猫();
1.多态的前提
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提,就是存在覆盖
2.多态的表现形式
父类的引用指向了自己的子类对象;
父类的引用也可以接受自己的子类对象。
3.多态的应用
4.多态的好处
多态的出现大大的提高的程序的扩展性
5.多态的弊端
提高的代码的扩展性,但是只能使用父类的引用访问父类中的成员。
6.多态的出现代码中的特点
多态的两种表现形式:重载和覆盖
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译失败
在运行时期:参阅对象所属的类中是否有调用的方法
在多态中静态成员函数的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
简单总结:成员函数在多态调用时,编译看左边,运行看右边
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
非静态有重写的作用
*/
/*
多态:可以理解为事物存在的多种体现形式。
人:男人,女人
动物:猫,狗
猫 x= new 猫();
动物 x= new 猫();
1.多态的前提
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提,就是存在覆盖
2.多态的表现形式
父类的引用指向了自己的子类对象;
父类的引用也可以接受自己的子类对象。
3.多态的应用
4.多态的好处
多态的出现大大的提高的程序的扩展性
5.多态的弊端
提高的代码的扩展性,但是只能使用父类的引用访问父类中的成员。
6.多态的出现代码中的特点
多态的两种表现形式:重载和覆盖
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译失败
在运行时期:参阅对象所属的类中是否有调用的方法
在多态中静态成员函数的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
简单总结:成员函数在多态调用时,编译看左边,运行看右边
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
非静态有重写的作用
*/
<pre name="code" class="java">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 DuoTaiDemo { public static void main(String[] args) { // function(new Cat()); // function(new Dog()); Animal a = new Cat();// 类型提升,向上转型 a.eat(); // 如果想要调用猫的特有方法时,如何操作 // 强制将父类的引用,转换成子类类型 Cat c = (Cat) a; c.catchMouse(); // 千万不要出现这样的操作,就是将父类对象转成子类类型。 // 我们能转换 的是父类应用指向了子类对象时,该引用可以被提升,也可以被强制转换 // 多态自始至终都是子类对象在做着变化 // Animal a = new Animal(); // Cat c = (Cat)a; } public static void function(Animal a)// 提高代码的扩展性 { a.eat(); } /* * public static void function(Dog d){ * * * d.eat(); } */ }
相关文章推荐
- Java线程面试题 Top 50
- 黑马程序员——java中面向对象的三大特征
- 对程序员最具影响的书籍清单
- 面试题目
- 黑马程序员——Java基础----IO(字节流、操作规律等)(2)
- 面试总结
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 腾讯面试算法题
- 【July程序员编程艺术】之现场编写类似strstr/strcpy/strpbrk的函数
- 【扣丁学堂】程序员如何提高工作效率?
- 3-5年的PHPer常见的面试题
- .Net程序员面试 中级篇 (回答Scott Hanselman的问题)
- .Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)
- .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
- 黑马程序员——Java基础---面向对象(封装、构造函数)(2)
- C#笔试面试宝典值得收藏1
- C#面试基础问题0
- webservice CXF 客户端调用报错
- 黑马程序员————java反射的简单应用
- 黑马程序员——Java基础语法---关键字、常量、变量、运算符