Java-面向对象12--多态

多态

多态的抽象理解
比如一个“人类” 人类有一个行为是休息, 一个“男人”一个“女人”,男人有一个休息方法是发游戏,女人也有一个休息方法是买买买
从代码角度理解

  • “人类”是一个父类
  • 人类有一个“休息”方法 放松

  • “男人”子类继承于人类
  • 男人有一个“休息”方法是“打游戏”

  • “女人”子类继承于人类
  • 女人有一个“休息”方法是“买买买”

那么多态就是

  • 同一方法可以根据对象的不同而采用多种不同的行为方式。
  • 一个对象的实际类型是确定的,但可以指向的引用类型有很多(例如父类 或者是长辈类)

多态存在的前提

  • 有继承关系
  • 子类重写了父类的方法
  • 父类引用类型指向子类对象

注意点

  1. 多态是方法的多态,属性没有多态。
  2. static静态方法 final常量 private私有方法不能被重写,无法满足多态的前提

代码实例

//Person父类
public class Person {
    String name;
    public void rest(){
        System.out.println("放松");
    }
}
//--------------------------------
//Man子类
public class Man extends Person{
    public void rest(){
        System.out.println("打游戏");
    }public void in(){
        System.out.println("男in");
    }
}
//--------------------------------
//Woman子类
public class Woman extends Person{
    public void rest(){
        System.out.println("买买买");
    }
    public void in(){
        System.out.println("女in");
    }
}	
//--------------------------------
//测试类  
public class Application {
    public static void main(String[]args){
        //创建一个男人对象叫小明
        Man xm=new Man();
        //调动小明的休息方法
        xm.rest();//打游戏
        //创建一个女人对象叫小红
        Woman xh=new Woman();
        //调动小红的休息方法
        xh.rest();//买买买
        //----------------------
        //那么我们利用多态来分别使用小明和小红的休息方法
        //person引用类型指向男人对象创建一个小明2
        Person xm2=new Man();
        //调用小明2休息方法
        xm2.rest();//打游戏
        //person引用类型指向女人对象创建一个小明2
        Person xh2=new Woman();
        //调用小明2休息方法
        xh2.rest();//买买买
        //-------------------------
        //当父类中没有in方法时 子类中有时
        xm2.in();//会直接报错找不到in方法
        //如果需要在父类指向子类对象,创建的实例对象使用父类没有的方法需要强制转换
        ((Man)xm2).in();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值