Java复习——多态性

来源:互联网 发布:mac os 远程桌面 编辑:程序博客网 时间:2024/05/21 17:10

一、多态性的概念
多态是面向对象三大特性之一
二、多态性的两种情况
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("再不交房租,我就烧了你的铺!");    }}
原创粉丝点击