java多态
来源:互联网 发布:陈翔六点半 知乎 编辑:程序博客网 时间:2024/05/17 13:41
定义:多态性是指统一的接口,不同的表现形式。
多态的体现
父类或者接口的引用指向或者接收自己的子类对象。
父类的引用也可以接收自己的对象
多态的前提
必须是类与类之间有关系,要么继承或实现
通常还有一个前提,存在覆盖
多态的好处
多态的出现大大的提高了程序的扩展性
多态的弊端
只能使用父类的引用访问父类的成员
对象类型的装换
和基本数据类型之间的强制类型转换(向下转型)一样,存在继承关系的父类对象和子类对象之间可以相互转换(即引用类型的转换),并遵守以下原则:
1).子类对象可以被视为其父类的一个对象。
2).父类对象不能被当作是某一个子类的对象
运行时多态的三原则
1.对象不变;(改变的是主观认识)
2.父类类型的子类对象 不能访问子类中特有方法 ,如果想访问子类中特有方法必须将父类类型再强制转换为子类类型。例如: cat cat = (cat)cat;
3.父类类型的子类对象实际调用子类覆盖后的方法。
实例
在我们下面的例子中,有5个类。
Game类是Football、Basketball、Popolong的父类,Games类使用前面4个类。
Java根据动态绑定决定执行“更具体”的方法,即子类方法。
实例
在我们下面的例子中,有5个类。
Game类是Football、Basketball、Popolong的父类,Games类使用前面4个类。
Java根据动态绑定决定执行“更具体”的方法,即子类方法。
//Game.javapackage cn.edu.uibe.oop;public class Game { protected void play(){ System.out.println("play game"); }}//Football.javapackage cn.edu.uibe.oop;public class Football extends Game { protected void play() { System.out.println("play football"); super.play(); } void f(){ play(); }}//Basketball.javapackage cn.edu.uibe.oop;public class Basketball extends Game{ protected void play() { System.out.println("play basketball"); }}//Popolong.javapackage cn.edu.uibe.oop;public class Popolong extends Game { protected void play() { System.out.println("play popolong"); }}//Games.javapackage cn.edu.uibe.oop;public class Games { public static void main(String[] args) { Game[] games = new Game[10]; games[0] = new Basketball(); games[1] = new Football(); games[2] = new Popolong(); for(int i=0;i<games.length;i++){ if(games[i]!=null) games[i].play(); } }}
0 0
- Java学习 java -- 多态
- java多态
- java多态
- java多态
- java多态
- Java多态
- java多态
- JAVA@多态
- Java多态
- java 多态
- Java多态
- java多态
- [Java] 多态
- JAVA多态
- Java多态
- java多态
- java 多态
- java多态
- UML之包图
- 自抛自打练习收小臂
- iOS启动画面延时
- 好的架构源于不停地衍变,而非设计(确实如此)
- 网站推荐-不断更新
- java多态
- opencv2-第五章-floodFill漫水填充算法
- 0000-00-00 创建书语的粑粑的博客索引
- powerdesigner与oracle
- java环境变量配置
- 浏览器HTTP缓存原理分析
- PHP操作MySQL数据库
- Struts2中获得Request,Response的几种方法
- Android的Socket通信编程实例