18、多态

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度

学习过程:

多态(型)性是指“多种形式”同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。多态性一般分为编译时的多态性和运行时的多态性。在java中多态一般又分为方法的重写和方法的重载。对多态性的更多的研究我们在后面的接口和java高级中讲解。

一、方法的重载

是指在类中有多个具有相同名称的方法,方法具有不同的参数列表。我们可以在上一节的Carnivorous类中添加几个move方法,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

  /**

 * 食肉类动物

 * extends-- 继承

 */

//              子类      继承       父类

public class Carnivorous extends  Animals{

    //下面几个方法就是方法的重载,注意他们的方法名称都是move,但是具有不同的参数

    public void move(){

        System.out.println("我会跑");

    }

     

    public void move(String name){

        System.out.println(name+" 我会跑"); 

    }

     

    public void move(String name,int age){

        System.out.println(name+" 我会跑"); 

    }

}

虽然这个几个方法的方法名称都move,但是编译器并没有报错,因为他们的参数形式都是不一样,这就是方法的重载,我们可以在Run方法中调用上面的任意个move方法。除了普通方法可以重载外,构造方法也是可以重载的。我们可以为上面的类添加两个构造方法。代码如下:

1

2

3

4

5

6

 public Carnivorous(){

    System.out.println("新建一个食肉类动物");

}

public Carnivorous(String name){

    System.out.println("新建一个食肉类动物"+"名称叫"+name);

}

二、方法的重写

子类和父类的方法具有相同的名称和类型,用子类对象调用子类中的重写方法。我们可以回到Animals类中,在这个类中有一个eat方法,在这个eat方法中我们添加一句语句。

1

2

3

 public void eat() {

    System.out.println("我是父类的eat方法,动物吃东西");

}

现在我们在子类也添加一个eat()方法,

1

2

3

 public void eat() {

     System.out.println("我是子类Carnivorous的eat方法,动物吃东西");

}

这样在子类中eat方法就会覆盖了父类的eat方法,这就是方法的重写。我们可以在Run类中测试一下,构造一个Carnivorous类的对象,调用eat方法,程序输出的是:我是子类Carnivorous的eat方法,动物吃东西。

1

2

 Carnivorous carnivorous=new Carnivorous();

carnivorous.eat();

猜你喜欢

转载自blog.csdn.net/liubao616311/article/details/82744537
18