标签:
---恢复内容开始---
刚学完java,开始了查漏补缺阶段阶段,为了巩固自己的知识和为别人提供一些微末的帮助决定开通博客,求各位大牛们指出我的不足,不要吝惜言语,也希望我的总结可以对别人有帮助,对自己对他人负责。
开始正文:术语多态:可以定义为“有多种形态”,多态引用是一个一个在不同时刻可以指向不同类型对象的引用变量。通过多态引用可以调用不同的具体的方法。
类方法的多态性的实现有两种方式:
1:方法重载:可以声明多个同名但是参数不同(个数、类型和顺序)的方法。注意呵呵重载方法只能声明在一个类里,当程序编译时会根据参数的不同调用具体的方法。同时有引出了另一个概念——静态绑定。
静态绑定:程序开始编译时对方法的调用进行绑定。(额额)
package animal; public class Dog { //dog的eat方法 public void eat(int a){ System.out.println("My dog eat foot num"+a); } //一个类内重载的dog——eat方法(参数不同) public void eat(String str){ System.out.println("My dog eat foot"+str); } public static void main(String[] args){ Dog dog = new Dog(); dog.eat("chicken"); dog.eat(3); } }
My dog eat footchicken
My dog eat foot num3
2:方法重写:派生类从基类“继承”的签名一致的方法,(派生类与基类方法的签名相同但是具体方法不同——在不同类中一个方法名具有不同的实现方法)。然后派生类和基类的关系可以有很多种比如继承、接口总之都是is a的关系。同时方法的重写对应的是动态绑定。
动态绑定:程序在运行时确定调用的具体的方法。(有例子)
package animal; public class Mydog extends Animal{ public void eat() { System.out.println("这是一条狗吃的"); } public void sleep(){ System.out.println("狗要睡觉啦。。。。"); } /*程序在运行时确定调用的具体的方法。*/ public static void main(String[] args) { Mydog mydog1 = new Mydog(); mydog1.eat();//调用派生类方法eat mydog1.sleep();//调用派生类方法slepp Animal mycat = new Mydog(); System.out.println("下面是向上转型——动物实现狗的方法(多态)——-————"); mycat.eat();//向上转型——动物实现狗的方法(多态); /*对于向下转型必须显示指定就是必须使用强制转换*/ Animal mycat2 = new Mydog(); Mydog mydog2 = (Mydog)mycat2; System.out.println("动物向下转型的实现的狗的sleep方法——————"); mydog2.eat();//注意是谁吃的,还是狗的方法。 mydog2.sleep();//动物向下转型的实现的狗的sleep方法 } }
因为要上课写了大约一个小时,汗颜...上面的动态绑定又分为向上和向下转型两个方面,向下是强制转化,我认为向上最能体现多态的思想(调用不同类中不同的方法),就写到这吧,敬礼!
---恢复内容结束---
标签:
原文地址:http://www.cnblogs.com/yweihum/p/5330357.html