Java-面向对象的三大特征--多态

1.什么是多态?

多态是一种面向对象的编程思想

  概念:定义同一个父类型的不同引用变量,用来接收对应子类型的相关实例对象,从而通过执行方法,实现一个方法演变出不同场景的操作,称之为多态

它产生的优点如下:

  便于代码之间的替换

  扩充起代码来简单快捷,简化编程流程

  运用多态写出的代码,运行灵活,更好的简化无效重复代码,使得代码可读性更好

2.多态使用的前提条件

  多态是建立在有继承关系存在的基础上的

3.多态的代码实现

使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。

//定义动物类接口
public interface Animal {
    void shout();

}




/**
 * 定义小狗类实现动物类的shout方法
 * @author asus
 *
 */
 class Dog implements Animal {
     @Override
    public void shout() {
        System.out.println("小狗汪汪叫~.~");
}
}



/**
 * 定义小狗类实现动物类的shout方法
 * @author asus
 *
 */
 class Dog implements Animal {
     @Override
    public void shout() {
        System.out.println("小狗汪汪叫~.~");
}
}




/*
 * 定义一个测试类
 * 一键运行,搞定多态
 */
public class Test {

    public static void main(String[] args) {
        //定义Animal的变量animal1 用来接受Dog类的实例对象
        Animal animal1 = new Dog();
        
        //定义Animal的变量animal2 用来接受Cat类的实例对象
        Animal animal2 = new Cat();
        //分别传入参数animal1和animal2,运行,见证奇迹吧
        AnimalShout(animal1);
        AnimalShout(animal2);
        System.out.println("很简单吧,多态 is just so so");
        
        
    }
    //定义静态的动物叫声方法AnimalShout(动物声音识别器)
    public static void AnimalShout(Animal animal){
        //根据传入的参数去选择调用对应的类型shout的方法
        animal.shout();
    }

}

运行一下,你就知道啦!!!

4.多态涉及的类型转换

  向上转型:子类型转换成父类型

      特点: 

    父类声明指向子类对象

    调用的是子类重写父类的方法

    不能调用子类特有的方法(不通过继承而新增的方法)

  向下转型:父类型转换为子类型

    特点:

    多个子类型对象可赋值给同一个父类型变量,但同一个子类型变量只能接收对应子类型的父类实例

    如果类型转换错误,会抛异常,因此向下转型之前,通常需要先做一次类型判断

  类型判断

    

对象 (或者对象引用变量)instanceof 类(或接口)

codeing.....

    //定义静态的动物叫声方法AnimalShout(动物声音识别器)
    public static void AnimalShout(Animal animal){
        //Animal类型的animal向下转型为Cat类型并赋值给cat
        if(animal instanceof Cat){
            Cat cat = (Cat)animal;
            //根据传入的参数去选择调用对应的类型shout的方法
            animal.shout();
        }
    }

笨鸟先飞,捷足先登,就算别人不相信你,你也要相信你自己!

原文地址:https://www.cnblogs.com/momo-nancy/p/15440948.html