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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值