King's Studio

Java中的多态

字数统计: 542阅读时长: 2 min
2019/01/22 Share

前面已经总结过了封装,今天来总结一下多态。

多态存在的条件

1、类的继承

提到多态就必须要讲一下继承的概念,当一个类继承于另一个类时,该类则是前一个类的子类,而被继承的类就称为这个子类的父类。子类继承父类可以得到父类的全部属性和方法(构造方法除外),即子类对象可以调用父类的未被重写的所有方法。而当没有写出该类继承于哪一个类时,默认继承Object类,即Object类是所有类的父类。

2、方法的重写

指的是子类重写父类的方法,当父类方法不能满足子类的实现时,需要重写父类的方法。

3、父类引用指向子类对象

下面我们通过实际代码进行理解,我们首先定义一个Animal类,再定义一个Dog类和Cat类继承Animal类。

1
2
3
4
5
public class Animal {
public void shout() {
System.out.println("叫了一声!");
}
}
1
2
3
4
5
6
public class Dog extends Animal{
//对父类Animal的shout()方法进行了重写,因为现实中狗的叫声与其他动物不同
public void shout() {
System.out.println("汪汪汪!");
}
}
1
2
3
4
5
6
public class Cat extends Animal{
//对父类Animal的shout()方法进行了重写,因为现实中猫的叫声与其他动物不同
public void shout() {
System.out.println("喵喵喵!");
}
}

然后我们通过Test类测试多态的效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Test {

public static void main(String[] args) {
//新建Animal对象,调用animalShout()方法,传入a
Animal a = new Animal();
animalShout(a);

//新建Dog对象
Animal d = new Dog();
animalShout(d);

//新建Cat对象
animalShout(new Cat());
}

static void animalShout(Animal a) {//父类引用指向子类对象
a.shout();
}
}

输出结果

1
2
3
叫了一声!
汪汪汪!
喵喵喵!

总结

这样就简单实现了多态的效果,因为Dog类和Cat类都继承了Animal类,而各自要实现的shout()方法是不同的效果,通过父类引用指向子类对象,就很好的解决了这个问题。在实际开发中,经常需要用到多态。

原文作者:金奇

原文链接:https://www.rossontheway.com/2019/01/22/java回顾3/

发表日期:January 22nd 2019, 12:00:00 am

更新日期:March 21st 2019, 9:34:57 am

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,除特别声明外,转载请注明出处!

CATALOG
  1. 1. 多态存在的条件
    1. 1.1. 1、类的继承
    2. 1.2. 2、方法的重写
    3. 1.3. 3、父类引用指向子类对象
  2. 2. 总结