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


 

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