A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吃阁子的猫 中级黑马   /  2013-8-7 18:37  /  1601 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吃阁子的猫 于 2013-8-10 10:43 编辑

在多态中有个很重要的概念是动态绑定,java中虽未提到指针,但是却隐射了指针的概念,对这个问题一直没闹明白,麻烦高人指教指教

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 新人鼓励

查看全部评分

6 个回复

倒序浏览
静态绑定:
在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。
针对java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static,private和构造方法是前期绑定

动态绑定:
后期绑定:在运行时根据具体对象的类型进行绑定。
若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,但方法调用机制能自己去调查,找到正确的方法主体。不同的语言对后期绑定的实现方法是有所区别的。但我们至少可以这样认为:它们都要在对象中安插某些特殊类型的信息。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
//有两个类A、B;B继承之A
public class A{
        public void method()
        {
                System.out.println("A");
        }
}

public class B extends A{
        public void method()
        {
                System.out.println("B");
        }
}


public class ExtendTest
{
        public static void main(String[] args) {
                //创建对象a
               //java程序分编译期和运行期
               //编译期阶段只认a对象是A类型
               //运行期阶段的时候实际A对象的类似是B类型
              //向下类型转换
                A a = new B();
               
                //程序在编译阶段a被看成A类型
                //亦此在编译阶段,a引用绑定是A类中的method方法(此阶段称为:静态绑定)
               //程序在运行阶段a被看成B类型,而B类中的已经重写了method()方法
                //亦此在运行阶段,a引用绑定是B类中的method方法(此阶段称为:动态绑定)
                a.method();   //打印B
        }
}
回复 使用道具 举报 1 0
曹奎 发表于 2013-8-7 18:57
静态绑定:
在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。
针对java简单的可以 ...

谢谢,讲的很清楚,但是没看明白
回复 使用道具 举报
sergio 发表于 2013-8-7 22:46
//有两个类A、B;B继承之A
public class A{
        public void method()

清楚一点点了,谢谢:handshake
回复 使用道具 举报
吃阁子的猫 发表于 2013-8-7 23:44
谢谢,讲的很清楚,但是没看明白

你没看明白是因为他只百度了这么几行,下面还有几十行你看了就明白了.
回复 使用道具 举报
{:soso_e135:}我的被遗忘了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马