多态的介绍和使用
前言
多太的使用方法和使用场景介绍
一、多态(polymorphic)是什么?
概念 : 将子类对象保存到父类的变量中(向上造型/向上转型),当父类变量调用方法时,如果子类重写了该方法,则会直接执行子类中重写的方法
简单理解 : 可以看成一种事物多种形态
示例 :
今天晚上大家请我吃大餐 : 龙虾 喝粥 思想大餐…
我准备买一辆车: 独轮车 自行车 拖拉机 布加迪模型…
二、使用步骤
1.创建类和子类
代码如下(示例):
public class Biology {
int age = 1; // 定义一个成员变量
public void eat() { // 创建一个公共的方法eat
System.out.println("都可以吃");
}
}
public class Person extends Biology () {
int age = 20;
@override
public void eat() { // 重写父类的方法
System.out.println("吃大鱼大肉大虾");
}
public void coding() { // 自己的私有方法
System.out.println("吃我还会写代码");
}
}
public class Pig extends Biology () {
int age = 2;
@override
public void eat() { // 重写父类的方法
System.out.println("吃猪饲料");
}
public void gongbaicai() { // 自己的私有方法
System.out.println("我拱白菜");
}
}
2.测试类
代码如下:
public class AnimalTest {
Animal animal = new Person(); // 将子类的地址赋值给父类的变量中
Animal animal2 = new Pig(); // 将Pig的子类地址赋值给父类变量
animal2 = new Person();
animal.eat(); // "吃大鱼大肉大虾" 此时打印的是Person中的eat()方法 ,多态
System.out.println(animal.age) // 打印 1 ;
animal2.eat(); //"吃猪饲料" 此时打印的是Pig中的eat()方法
}
/**
此处是调用子类中特有方法,必须先判断,进行强制转换
*/
if(父类变量 instanceof 子类类型1){
//强制类型转换
子类类型1 子类变量 = (子类类型1)父类变量;
//现在就可以调用子类特有方法
子类变量.子类特有方法(...);
}else if(父类变量 instanceof 子类类型2){
//强制类型转换
子类类型2 子类变量 = (子类类型2)父类变量;
//现在就可以调用子类特有方法
子类变量.子类特有方法(...);
}
if (animal2 instanceof Person) {
Person person = (Person)animal ; // 现在就可以调用子类特有的方法
person.coding();
} else if(animal2 instanceof Pig) {
Pig pig = (Pig)animal;
pig.gongbaicai();
}
总结
这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了多态的使用,而多态还要很多实用场景各位可以试一试