黑马程序员——多态的核心思想

来源:互联网 发布:魔兽世界7.25优化设置 编辑:程序博客网 时间:2024/06/05 22:18
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


/*


多态:可以理解为事物存在的多种体现形式。


人:男人,女人


动物:猫,狗


猫 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(); } */}



0 0
原创粉丝点击