Java中的传值引用和传址引用

      传值引用主要是针对基本数据类型而言。所谓传值引用,就是在进行变量的传递过程中,传递的是变量的实际的值,是一个新的拷贝,一个变量值不会影响另一个变量值得改变。

      eg:

public class fun1

{

    public static void main(String[] args)

    {

        int a=5;

        int b=a;

        System.out.println("在重新给a赋值前a的值:"+a+"    "+"b的值:"+b);

        a=20;

        System.out.println("在重新给a赋值后a的值:"+a+"    "+"b的值:"+b);

    }

}


       传址引用主要是针对对象操作,它传递的是一个对象句柄的拷贝。也就形成了多个变量操作一个对象的局面,任何一个针对句柄操作的变量,都会影响到其他变量。

eg:

public class fun2

{

    int x=2;

    public static void main(String[] args)

    {

        fun2 f=new fun2();

        fun2 f1=f;

        System.out.println("测试前的数据:");

        System.out.println("输出两个数据值:");

        System.out.println("f.x="+f.x);

        System.out.println("f1.x="+f1.x);

        System.out.println("测试后的数据:");

        f.x=19;

        System.out.println("输出两个数据值:");

        System.out.println("f.x="+f.x);

        System.out.println("f1.x="+f1.x);

    }

}


绑定

        在Java中,绑定就是对象方法的调用。准确地说,就是对象句柄与方法的绑定。绑定分为静态绑定和动态绑定。

        当声明一个方法为private\static\final,或者声明一个构造器时,编译器清楚地知道是调用哪个方法,不存在与实际类型不匹配的现象,这就是静态绑定。静态绑定不存在多态问题。

        动态绑定只用于程序运行的过程中,其会根据程序传递的参数不同,而调用不同的方法,这种绑定只有在程序运行期间才会发生,即动态绑定有着不确定性。动态绑定存在多态的问题。

超类

        Java语言是一门面向对象的程序设计语言,其类库中所有的类都从Object类中继承而来,即Object类是java类库中所有类的父类。

        有时,可以使用Object类型得变量,来代表任何类型的对象。

        将子类实例赋给父类变量时,系统会自动完成转换;但将父类实例赋给子类变量时,必须进行类型转换。

通用编程

任何类型的实例都可以使用Object这个超类的变量来替代,因为Object类是所有类的父类。根据多态的原理,可以使用父类的类型代替子类,但是不能用子类的类型代替父类,因为父类中有的方法函数,子类中都有,而子类中的方法函数,父类中不一定都有。

动态和静态编译

       允许对对象进行不同的操作,但具体的操作却取决于对象的类型。

       程序在编译的时候,什么函数对哪个对象执行什么样的操作都已经确定,换句话说称作静态编译。多态是动态编译,动态编译就是在程序执行的过程中,根据不同对象类型有不同的绑定,其通过一个方法接口,实现多个不同的实现过程。这就依赖于编译时编译器对同一个方法不同参数的识别。

绑定与多态的联系

        将方法的调用连接到方法本身被称为绑定。当绑定发生在程序运行之前,被称作前绑定(earlybinding),而在程序运行的时候,根据对象的类型来决定绑定方法被称为后绑定,也叫运行时绑定(run-time binding)或动态绑定(dynamic binding).

        Java的所有方法都采用后绑定,通常情况下,人们常常会将多态性同java的那些非面向对象的特性混淆。需要特别注意的是“不是后绑定的,就不是多态性”,不用考虑是不是该采用后绑定,这一切都是自动的。

多态与重载的区别

重载是在一个类里,名字相同但参数不同的方法。多态是为了避免在父类里大量重载,而引起代码臃肿且难于维护的解决方案。多态表现形式:重载和覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值