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

查漏补缺——java多态

时间:2016-03-28 20:14:29      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:

---恢复内容开始---

刚学完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方法
    }
}

 

技术分享

因为要上课写了大约一个小时,汗颜...上面的动态绑定又分为向上和向下转型两个方面,向下是强制转化,我认为向上最能体现多态的思想(调用不同类中不同的方法),就写到这吧,敬礼!

 

 

---恢复内容结束---

查漏补缺——java多态

标签:

原文地址:http://www.cnblogs.com/yweihum/p/5330357.html

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