文章目录
- 前言
- 一、多态性
- 1、何为对象的多态性?
- 2、多态的使用:虚拟方法调用
- 3、多态性的使用前提
- 二、为什么要使用多态性?
- 1.代码
- 三、多态不适用于属性
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、多态性
理解:对象的多种形态(使用多态的时候对象必须有继承关系)
1、何为对象的多态性?
对象的多态性: 父类的引用可以指向子类对象
Person s = new Student();
2、多态的使用:虚拟方法调用
方法多态 :创建子类对象时,调用的方法为子类重写父类的方法或者继承的方法 也叫做虚拟方法调用
有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法
总结:编译看左边,运行看右边
3、多态性的使用前提
① 类的继承关系
② 方法的重写(子类重写父类方法)
二、为什么要使用多态性?
1.代码
①代码如下(示例):
public class AnimalTest {
public static void main(String[] args) {
//多态
AnimalTest animalTest = new AnimalTest();
animalTest.fun(new Dog());
animalTest.fun(new Cat());
animalTest.method(new Cat());
}
//多态
public void fun(Animal animal) {
animal.eat();
animal.shout();
}
//如果没有多态性,必须创建子类对象
public void fun(Dog dog) {
dog.eat();
dog.shout();
}
public void fun(Cat cat) {
cat.eat();
cat.shout();
}
}
②代码:
//有多态、随便new个对象可以通用 比如调用animalTest.method(new Cat());
public void method(Object obj){
}
③代码:
//多态 jdbc中调用不同的数据库厂商,相当于在父类中定义了数据库连接,我们操作调用时只需要对应不同的数据库厂商
class Driver{
public void doData(Connection conn){//相当于 new MySqlConnection() 的子类
//按照规范操作数据
//conn.createStatement()
//相当于调用的是mysql连接重写的方法
}
}