黑马程序员——多态的核心思想
来源:互联网 发布:魔兽世界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
- 黑马程序员——多态的核心思想
- 黑马程序员_向对象的核心思想+实例Day15
- 黑马程序员---面向对象核心思想总结
- 黑马程序员——面向对象的设计思想
- 黑马程序员——核心语法
- 黑马程序员——OC核心语法
- 黑马程序员——Java面向对象编程思想总结
- 黑马程序员——java基础--编程思想
- 黑马程序员_java编程思想——递归
- 黑马程序员——java面向对象思想
- 黑马程序员——JAVA基础--面向对象思想
- 黑马程序员 Java基础——面向对象思想
- 黑马程序员—JAVA高新技术之面向对象的设计思想
- 黑马程序员---思想是最重要的!!!
- 黑马程序员_面向对象的思想
- 黑马程序员_面对对象的思想
- 黑马程序员--面向对象的设计思想
- 黑马程序员——java基础——核心类
- C语言中的链接
- 畅通工程再续(MST)
- CocoaPods pod install/pod update更新慢卡住的问题
- freemarket中找不到res的路径
- 技术走出去看看开阔思维,不要做井底之蛙
- 黑马程序员——多态的核心思想
- 如何在inputreader中拦截相应的virtual key
- 企业都能用到的免费自动IT资产管理软件系统
- 随机过程笔记(一)
- PhpStorm 配置IDE
- 安卓概述及开发环境
- 单点登录问题集合
- DAO全部的实现代码
- IOS-15-IOS支付宝集成时解决的3个蛋疼的问题!(最蛋疼的一次,希望你们少受折磨)