java多态
2015-10-26 09:27
816 查看
定义:多态性是指统一的接口,不同的表现形式。
父类的引用也可以接收自己的对象
通常还有一个前提,存在覆盖
1).子类对象可以被视为其父类的一个对象。
2).父类对象不能被当作是某一个子类的对象
2.父类类型的子类对象 不能访问子类中特有方法 ,如果想访问子类中特有方法必须将父类类型再强制转换为子类类型。例如: cat cat = (cat)cat;
3.父类类型的子类对象实际调用子类覆盖后的方法。
Game类是Football、Basketball、Popolong的父类,Games类使用前面4个类。
Java根据动态绑定决定执行“更具体”的方法,即子类方法。
Game类是Football、Basketball、Popolong的父类,Games类使用前面4个类。
Java根据动态绑定决定执行“更具体”的方法,即子类方法。
多态的体现
父类或者接口的引用指向或者接收自己的子类对象。父类的引用也可以接收自己的对象
多态的前提
必须是类与类之间有关系,要么继承或实现通常还有一个前提,存在覆盖
多态的好处
多态的出现大大的提高了程序的扩展性多态的弊端
只能使用父类的引用访问父类的成员对象类型的装换
和基本数据类型之间的强制类型转换(向下转型)一样,存在继承关系的父类对象和子类对象之间可以相互转换(即引用类型的转换),并遵守以下原则: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.java package cn.edu.uibe.oop; public class Game { protected void play(){ System.out.println("play game"); } } //Football.java package cn.edu.uibe.oop; public class Football extends Game { protected void play() { System.out.println("play football"); super.play(); } void f(){ play(); } } //Basketball.java package cn.edu.uibe.oop; public class Basketball extends Game{ protected void play() { System.out.println("play basketball"); } } //Popolong.java package cn.edu.uibe.oop; public class Popolong extends Game { protected void play() { System.out.println("play popolong"); } } //Games.java package 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(); } } }
相关文章推荐
- Java学习——入门篇
- JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
- JAVA容器
- Hadoop启动报Error: JAVA_HOME is not set and could not be found解决办法
- java设计模式之适配器模式
- JDBC
- 从头认识java-4.4 this
- 从头认识java-4.4 this
- java IO流
- 从头认识java-4.3 默认构造器
- 从头认识java-4.3 默认构造器
- Java解析XML格式数据的方法详解
- java中sleep()和wait()的区别
- 表单的struts标签示例
- java线程同步方法
- Java内存分析一
- Java事务的深入理解 JAT
- [转]Eclipse 项目转移到Android Studio遇到的问题
- spring mvc处理流程概述
- [深入理解Java虚拟机]第八章 字节码执行引擎-基于栈的字节码解释执行引擎