您的位置:首页 > 编程语言 > Java开发

java多态

2015-10-26 09:27 816 查看
定义:多态性是指统一的接口,不同的表现形式。

多态的体现

       父类或者接口的引用指向或者接收自己的子类对象。
        父类的引用也可以接收自己的对象

多态的前提

        必须是类与类之间有关系,要么继承或实现
        通常还有一个前提,存在覆盖

多态的好处

        多态的出现大大的提高了程序的扩展性

多态的弊端

        只能使用父类的引用访问父类的成员

对象类型的装换

和基本数据类型之间的强制类型转换(向下转型)一样,存在继承关系的父类对象和子类对象之间可以相互转换(即引用类型的转换),并遵守以下原则:
  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();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: