0%

Java-多态

Java面向对象三大特征-多态(polymorphism)


  1. 多态的概念

多态的概念

  1. 多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。

  2. 多态是同一个行为具有多个不同表现形式或形态的能力。

  3. 多态就是同一个接口,使用不同的实例而执行不同操作。

Java实现多态的方法与多态的优点

引用变量的两种类型:

编译时类型:(模糊一点,一般是一个父类)由声明时的类型决定 运行时的类型:(运行时,具体是哪个子类就是哪个子类)由实际对应的对象类型决定

多态存在的3个必要条件: 继承、重写、父类引用指向子类对象 比如: >Parent p = new Child();

多态的优点:

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性

具体例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Animal {
String name;
public void run(){
System.out.println("我能跑");
}

public static void main(String[] args){
//传入动物类
testAnimal(new Animal());
//传入爬行类
testAnimal(new Reptiles());
//传入鸟类
testAnimal(new Bird());
/*
Animal animal = new Bird();
testAnimal(animal);
animal.Oviparous();//会报错,必须强转
((Bird) animal).Oviparous();//正确形式
*/

}

public static void testAnimal(Animal a){
a.run();
}

}

//爬行类
class Reptiles extends Animal{
@Override
public void run(){
System.out.println("我能爬行");
}
}

//鸟类
class Bird extends Animal{
@Override
public void run() {
super.run();
System.out.println("我能飞");
}

public void Oviparous(){
System.out.println("我是卵生");
}
}

多态的实现方式

  • 重写
  • 接口
  • 抽象类和抽象方法

后面两个暂时不讲,等学接口和抽象类时再说。