多态

发表时间:2017-05-08 16:34:14 浏览量( 23 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度

学习过程:

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

一、方法的重载

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

  /**
 * 食肉类动物
 * 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方法。除了普通方法可以重载外,构造方法也是可以重载的。我们可以为上面的类添加两个构造方法。代码如下:

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


二、方法的重写

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

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

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

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

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

 Carnivorous carnivorous=new Carnivorous();
carnivorous.eat();