当前位置:  编程技术>java/j2ee

面向对象编程,我的思想(5)

    来源: 互联网  发布时间:2014-10-15

    本文导语:  2.3深入探讨函数:2.3.1构造函数、默认构造函数、 缺省构造函数 对于上面的实例,它已经能完成绝大部分工作了,但它还是不完善的,还有许许多多的细节等到我们去完善!也许有的同学已经注意到了,当...


2.3深入探讨函数:

2.3.1构造函数、默认构造函数、 缺省构造函数
对于上面的实例,它已经能完成绝大部分工作了,但它还是不完善的,还有许许多多的细节等到我们去完善!也许有的同学已经注意到了,当我创建完“jingwei”这个对象时,这个对象的所有的属性都是空的,也就是说:这个对象的姓名是未定的、年龄是未定的、性别是未定的、薪水是未定的、午餐也是未定的。而我们想把这些属性都添加上去,就还要用对象调用相应的方法,去一个个修改!天啊,这简直是太麻烦了!有没有什么好方法能够在我们创建对象的同时就完成了对属性赋值的操作呢?哦不,应该说是对属性的初始化呢?当然没问题了,这就需要所谓的构造函数! 构造函数是类中最特殊的函数,它与析构函数的功能正好相反! 从特征上来说:1.它是编程语言中唯一没有返回值类型的函数。 2.它的名称与类的名称必须要完全相同。 3.它必须被声明为公共(public)的类型 4,可以对构造函数进行重载。 5.它在创建对象是自动被调用。 从功能上来说:1.它是对类中的属性进行初始化。 其实,对于上面的程序来说我们没有自己定义构造函数。但是,在这种情况下,系统会自动为我们定义一个“默认构造函数”。他会把数值变量自动赋值为0,把布尔行变量赋值为false等等(但在C++中,默认构造函数不初始化其成员)。如果程序员定义了构造函数,那么系统就不会再为你的程序添加一个缺默认造函数了。(在这里,我们提倡的是自己定义构造函数,而不是用系统的默认构造函数) 还是看个实例吧!这样比较清楚一些!
//employee.java

public class employee{

private String name; //员工姓名

private int age; //员工年龄

private char sex; //员工性别

private float emolument; //员工薪水

private boolean lunch; //员工午餐

//……等等

public employee(){ //这个就是“默认”构造函数

name = “jw”; //设置员工姓名

age = 20; //设置员工年龄

sex = “M”; //设置员工性别

emolument = 100; //设置员工薪水

lunch = false; //设置员工午餐

}

public void heater(){ //这个方法是用来加工员工的午餐

lunch = true;

}

//……等等

}; 这样,在我们创建“jingwei”这个对象的同时,它的所有的属性也被初始化了!显然,这大大的提高了工作效率,但是,它还是不符合要求。想想看,如果我们现在创建这个类型的第二个对象的时候会发生什么事情?告诉你,除了对象的“名”(这个名称不在是对象属性中的名称,而是对象本身的名称)不一样外,其所有的“属性值”都一样!比如:现在我们创建第二个对象flashmagic,然而我会发现这个对象的所有的属性和jingwei这个对象的所有的属性完全相同。而我们只能在用对象的方法去改变着写属性了!很显然,这种方法不大好!我们需要一种方法在创建对象的时候为对象的属性赋予“我们想要的值”。 相信你也看到了,默认构造函数就显得无能为力了。我们需要的是带参数的构造函数,在创建对象时,我们把参数传给构造函数,这样就能完成了上述的功能!口说无凭,还是来看个实例吧:
//employee.java

public class employee{

private String name; //员工姓名

private int age; //员工年龄

private char sex; //员工性别

private float emolument; //员工薪水

private boolean lunch; //员工午餐

//……等等

public employee(String n,int a,char s,float e,boolean l){ //看这个构造函数

name = n; //设置员工姓名

age = a; //设置员工年龄

sex = s; //设置员工性别

emolument = e; //设置员工薪水

lunch =l; //设置员工午餐

}

public void heater(){ //这个方法是用来加工员工的午餐

lunch = true;

}

//……等等

}; 这样一来,在创建对象的同时我们就可以给他赋予我们想要的值,很显然,这可就方便多了。哦,对了!还没有告诉你怎么创建呢!哈哈,往前翻几页你会看到这句话: jingwei = new employee();这是创建一个对象,而我们把它改成 jingwei = new employee("jingwei",20,'M',100,false);这样一来,所有的工作都完成了,呵呵!(在创建对象的同时赋予了我们想要的“初值”)

    
 
 

您可能感兴趣的文章:

  • 面向对象能完全取代面向过程吗?
  • linux下的编程主旨思想是在面向过程还是面向对象的?谢谢!!
  • 有人问我:何为面向对象编程?我给不出确切或形象的说法。谢!vb、pb等开发工具是不是面向对象编程的语言。
  • Glib对象系统(也称为"GObject")内部是如何实现面向对象特征的呢?
  • 面向对象数据库引擎 ojadb
  • 面向对象的网络开发包 ACE
  • 面向对象数据技术 Apache OODT
  • 面向Agent编程框架 SObjectizer iis7站长之家
  • 面向对象的脚本语言 Bento
  • 面向对象的脚本语言 ObjectScript
  • 面向对象的数据库系统 EyeDB
  • 帮帮新手,jsp面向对象吗?想把c/s结构的引用用jsp改写,交互功能可以实现吗
  • 面向对象的Tcl iTcl
  • 面向对象开发环境 Cocoa
  • PHP 面向对象框架 onPHP
  • 面向对象Ajax框架 Zaxas
  • javascript的面向对象编程 JS.Class
  • 面向对象的 JavaScript 库 QuoJS
  • 面向对象的JS框架 MooTools
  • 请大家帮忙推荐几本关于操作系统、面向对象的书!
  • 面向组合编程框架 Qi4j
  • 面向Agent编程框架 SObjectizer
  • java面向对象编程指南-100分奉上
  • 面向连接网络编程
  • java基于AspectJ(面向切面编程)编码示例分享
  • Javascript 面向对象编程之非构造函数的继承
  • Javascript 面向对象编程之封装
  • Javascript面向对象编程之构造函数的继承
  • PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
  • 体验Java 1.5中面向(AOP)编程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 面向事物(结构)的开发平台 XWorker
  • 面向服务的核心架构 Tuscany
  • 面向方面的框架 AspectJ
  • 面向新手的终端辅助工具 Clicompanion
  • 面向對象C語言編程框架 LW_OOPC
  • C++面向方面框架 Aspect C++
  • 面向移动终端的KISSY​瘦身版 KISSY MINI
  • 大家有谁听说过面向Linux的PlayStation平台?
  • Eclipse面向方面建模插件 A2Eclipse
  • 面向Swing的Query工具 Suery
  • 面向业务的配置平台 Utmost
  • 面向网络的数据库 Neo4j
  • Python 面向对象 成员的访问约束
  • vc,delphi&java三者之中到底谁更能支持面向对象技术?
  • 有人说学FLASH对学面向对像有用,真的吗?
  • JavaScript 面向对象框架 jOOPL
  • 面向对象的javascript框架 modulejs
  • 面向HTML5的Canvas库 jCanvaScript
  • 讨论:纯java的JDBC与JDBC-ODBC桥的比较?那种效率高、快?(面向服务端)
  • 对面向对象系统驱动方式的一点思考


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3