正在阅读:面向对象编程,我的思想(下)面向对象编程,我的思想(下)

2004-06-01 10:14 出处:CSDN 作者:flashmagic 责任编辑:linjixiong

  
  其实关于重载的概念你并不陌生,在编程中相信你也接触过。呵呵!让我们来举个操作符重载的例子你就会明白了,(JAVA中不支持这个功能)我们定义三个整数变量:
  
  int i1=2, i2=3,i3=0;
  
  i3 = i1 + i2;
  
  此时i3=5;加号实现了两个数相加的运算功能。然而我们现在要定义三个字符串变量:
  
  String str1=”jing”, str2=”wei”,str3=””;
  
  str3 = str1 + str2;
  
  此时str3 = “jingwei”;加号实现了两个字符串相加的运算功能。同样是加号,既可以把两个整型的变量加在一起,也可以把两个字符串类型的变量加在一起。同一个操作符实现了不同的功能------这就是所谓的操作符重载(嘿嘿,我说你一定见过吧:)!不就好像是汉语中的一词多意一样!我需要说明一下的是,C++中的操作符重载可没有这么简单。比如,我们可以对两个自定义类型的对象进行相加的运算,进行赋值的运算。这样书写简洁明了,而且非常实用。当然,关于操作符重载的话题太多了,有兴趣再看看书吧!
  
  我们把操作符的话题在转到函数上来,我们一直强调的是“对象调方法”------对象其实调的是方法的“名称”。而我们现在要对方法进想重载,也就是定义多个相同名称的函数,这样计算机在调用的时候不会混淆嘛?我想应该不会的,呵呵,因为仅仅是函数名称相同,而我们在调用函数时会把参数传递给他的。既是没有参数也是一种参数传递参数的信息(信息为无参数)!然而由于参数类型、参数数量、返回值类型不同我们就可以对相同名称的函数进行区分了!目的只有一个,用简便的方法实现更多的功能。还是举个例子吧,重载构造函数!
  

  public class employee{
  
  public employee(String n,int a,char s,float e,boolean l){ //看这个构造函数
  
  name = n; //设置员工姓名
  
  age = a; //设置员工年龄
  
  sex = s; //设置员工性别
  
  emolument = e; //设置员工薪水
  
  lunch =l; //设置员工午餐
  
  }
  
  public employee(){ //请注意这个函数没有参数
  
  name = “jw”;
  
  age = 20;
  
  sex = ’W’;
  
  emolument = 99;
  
  lunch = true
  
  }
  
  //……等等
  
  };


  
  看,在一个类中有两个名称相同的函数,可我们在使用的时候系统如何知道我们调用的是那个版本的函数呢?呵呵,我刚刚说过了,可以通过函数的参数类型、参数数量、返回值类型来确定。现在我们接着试验,我们创建两个对象其中的一个调用带参数的构造函数,第二个对象调用缺省值的构造函数。我们来看看结果:
  
  jingwei = new employee("jingwei",20,'M',100,false);/*创建这个对象的时候调用的是带参数的构造函数*/
  
  flashmagic = new employee();//创建这个对象是调用的是却省值的构造函数
  
  而得到的结果呢?让我们一起来看一看!
  
  Jingwei这个对象中: flashmagic这个对象中:
  

  name jingwei name jw






察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品