首页 > 代码库 > java 多态与多重继承

java 多态与多重继承

/**
* java 中的每一中操作,操作的数据类型必须合法。父类有的方法子类都有
* 凡是能够使用父类生成对象的地方都可以使用子类生成对象.
*
* 多态性
* 是指允许不同类的对象对同一消息作出响应。
* 多态性包括参数化多态性和包含多态性。多态性语言具有灵活、
* 抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
* 多态有两种表现形式:重载和覆盖
* 首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。
* 标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,
* 叫同一个名字而他们的参数不同。
* 他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!
* 再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。
* 我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变
* 那就把那个函数在子类中重新实现一遍。
* 这样再调用这个方法的时候,就是执行子类中的过程了。
* 父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,
* 不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)
*

package Learnbyoneself;import java.awt.CardLayout;public class Polymorphism {    /**     * java 中的每一中操作,操作的数据类型必须合法。父类有的方法子类都有     * 凡是能够使用父类生成对象的地方都可以使用子类生成对象.     *      * 多态性     * 是指允许不同类的对象对同一消息作出响应。     * 多态性包括参数化多态性和包含多态性。多态性语言具有灵活、     * 抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。     * 多态有两种表现形式:重载和覆盖     * 首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。         * 标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,     * 叫同一个名字而他们的参数不同。         * 他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!         * 再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。     *  我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变     *  那就把那个函数在子类中重新实现一遍。       *  这样再调用这个方法的时候,就是执行子类中的过程了。     *  父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,     *  不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)     *      * */            public static void main(String[] args) {        Owls ol=new Owls();        Brid br=new Brid();        br.brideat();        ol.brideat();        br.bridfiy();        ol.bridfiy();        br.bridname();        ol.bridname();        ol.bridname("OWL");        br.bridname("Kalmaegi");        ol.Owleat("OWL");        ol.Owlfly("OWL");            }    }//定义一个基类Bridclass Brid{          String name="brid";   public void bridfiy() {        // TODO Auto-generated method stub        System.out.println("The brids can fly");    }   public void brideat() {        // TODO Auto-generated method stub        System.out.println("The brid need to eat food");    }   public void bridname(String name){              System.out.println("My name is "+name);   }   public void bridname(){              System.out.println("My name is "+name);   }     }//定义一个子类class Owls extends Brid{     public void Owlfly(String name) {        // TODO Auto-generated method stub       System.out.println(name+" can fly!");    }     public void Owleat(String name) {        // TODO Auto-generated method stub       System.out.println(name +" need to eat food!");    }     }

结果:

The brid need to eat foodThe brid need to eat foodThe brids can flyThe brids can flyOWL need to eat food!OWL can fly!My name is bridMy name is bridMy name is OWLMy name is Kalmaegi

如上可以比较得知,父类有的子类都有。