Java复习——多态性

一、多态性的概念
多态是面向对象三大特性之一
二、多态性的两种情况
1、多态性我们大概可以分为两类:
(1)方法的重载与重写
(2)对象的多态性
三、对象的多态性
对象多态性是从继承关系中的多个类而来。
1、向上转型:将子类实例转为父类实例
格式:父类 父类对象 = 子类实例;——>自动转换
以基本数据类型操作为例:int i = ‘a’;
(因为c的容量比int小,所以可以自动完成)
2、向下转型:将父类实例转为子类实例
格式:子类 子类对象 = (子类) 子类实例;强制转换
以基本数据类型操作为例:char c = (char) 97;
(因为整型是4个字节比char2个字节要大,所以需要强制完成)
四、多态性小结
1、方法的重载与重写就是方法的多态性表现
2、多个子类就是父类中的多种形态
3、父类引用可以指向子类对象,自动转换
4、子类对象指向父类引用需要强制转换(注意:类型不对会报异常)
5、在实际开发中尽量使用父类引用(更利于扩展)

/**
 * 
 * 多态性
 *
 */
public class PolymorphismDemo {
    public static void main(String[] args){
        //八种基本类型
        //自定义类型

        //父类就是大,子类就是小
        Person man = new Man();//父类的引用指向子类对象
        man.say();
        Person women = new Women();
        women.say();

        //强制转换
        Man m = (Man)man;
        m.say();

        //java.lang.ClassCastException类型 转换异常
        //Man m1 = (Man)women;
        //没有父子关系的两种类型不能强制装换
    }
}

abstract class Person{
    String name;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void say(){}//抽象方法
}

class Man extends Person{
    public void say(){
        System.out.println("人家可是纯爷们!");
    }
}

class Women extends Person{
    public void say(){
        System.out.println("再不交房租,我就烧了你的铺!");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值