码迷,mamicode.com
首页 > 编程语言 > 详细

java 多态

时间:2019-12-18 14:54:19      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:抽象类   抽象方法   ati   接口实现   new   code   each   类方法   重写   

 多态的定义与使用格式

多态的定义格式:就是父类的引用变量指向子类对象

父类类型  变量名 = new 子类类型();

变量名.方法名();

 

普通类多态定义的格式

父类 变量名 = new 子类();

如: class Fu {}

    class Zi extends Fu {}

    //类的多态使用

Fu f = new Zi();

 

式抽象类多态定义的格

抽象类 变量名 = new 抽象类子类();

如: abstract class Fu {

         public abstract void method();

         }

class Zi extends Fu {

public void method(){

              System.out.println(“重写父类抽象方法”);

}

}

//类的多态使用

Fu fu= new Zi();

 

接口多态定义的格式

接口 变量名 = new 接口实现类();

如: interface Fu {

             public abstract void method();

}

class Zi implements Fu {

             public void method(){

              System.out.println(“重写接口抽象方法”);

}

}

//接口的多态使用

Fu fu = new Zi();

 

 

注意事项

同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。

如 Person p1 = new Student();

   Person p2 = new Teacher();

   p1.work(); //p1会调用Student类中重写的work方法

   p2.work(); //p2会调用Teacher类中重写的work方法

当变量名指向不同的子类对象时,由于每个子类重写父类方法的内容不同,所以会调用不同的方法。

 

public class Person {
    public void eat() {
        System.out.println("人吃饭");
    }
}

 

public class Student extends Person{
    public void eat() {
        System.out.println("学生吃饭");
    }
}

 

public abstract class Animal {
    public abstract void sleep() ;
}

 

public class Cat extends Animal{
    public void sleep() {
        System.out.println("猫趴着睡觉");
    }
}

 

public interface Drinking {
    public abstract void drink();
}

 

public class Pig implements Drinking{
    public void drink() {
        System.out.println("小猪喝酒");
    }
}

 

 

public class Demo01 {
    public static void main(String[] args) {
        //1.多态:子类对象指向父类引用变量(普通类之间的多态)
        Person p=new Student();
        p.eat();
        //2.抽象类与普通类的多态(抽象类可利用多态创建普通对象)
        Animal a=new Cat();
        a.sleep();
        //3.接口与普通类之间的多态(子类必须是普通类)
        Drinking d=new Pig();
        d.drink();
    }
}

java 多态

标签:抽象类   抽象方法   ati   接口实现   new   code   each   类方法   重写   

原文地址:https://www.cnblogs.com/l1314/p/12059557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!