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

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);这样一来,所有的工作都完成了,呵呵!(在创建对象的同时赋予了我们想要的“初值”)

(0)

相关推荐

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

    2.3深入探讨函数: 2.3.1构造函数.默认构造函数. 缺省构造函数 对于上面的实例,它已经能完成绝大部分工作了,但它还是不完善的,还有许许多多的细节等到我们去完善!也许有的同学已经注意到了,当我创建完"jingwei"这个对象时,这个对象的所有的属性都是空的,也就是说:这个对象的姓名是未定的.年龄是未定的.性别是未定的.薪水是未定的.午餐也是未定的.而我们想把这些属性都添加上去,就还要用对象调用相应的方法,去一个个修改!天啊,这简直是太麻烦了!有没有什么好方法能够在我们创建对象的同

  • 全方位讲解Java的面向对象编程思想

    什么是面向对象? Object 对象,Oriendted 以-为导向的, Programming 程序设计 面向对象就是使用对象进行程序设计,简写成OOP. SP和OOP对比 面向对象的三大原则      封装  继承   多态 对象 对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为: 对象其实就是"数据"和"函数"的封装体,其中: 数据表示自身的状态,也称作"属性"或"成员数据": 函数表示自身的

  • Java语言面向对象编程思想之类与对象实例详解

    在初学者学Java的时候,面向对象很难让人搞懂,那么今天小编就来为大家把这个思想来为大家用极为简单的方法理解吧. 首先我们来简单的阐述面向对象的思想. 面向对象: 官方的语言很抽象,我们把官方的解释和定义抛开.想想,自己有什么,对!!我们自己有手脚眼口鼻等一系列的器官.来把自己所具有的器官就可以看作我们的属性,自己是不是可以喜怒哀乐和嬉笑怒骂,这些是不是我们的行为,那么自己的具有的属性加自己有的行为就称为一个对象. 注意!!我们自己,一个个体是一个对象,因为,你是你,我是我,我们虽然有相同的,但

  • 剖析C++的面向对象编程思想

    面向对象的程序设计 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) 的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为. 面向过程就是分析出解决问题所需要的步骤,然后用函数逐步实现,再依次调用就可以了. 面向对象和面向过程是两种不同的编程思想,没有哪一种绝对完美,要根据具体需求拟定开发方案.例如,开发一个小型软件或应用程序,工程量小,短时间内即可完成,完全可以采用面

  • 浅谈Python面向对象编程oop思想心得

    花了几个小时给小表弟普及了一下OOP的知识,索性总结一下写篇文章. OOP全称Object Oriented Programming 即面向对象编程,之所以有这么一个奇怪的称呼,是因为这个概念并非凭空而来,而是相对于"面向过程编程"的称呼. 而要了解什么是面向过程,就要从最早的即非面向对象,又非面向过程的原始编程说起. 上古时期 在最早的编程的上古时期,程序都只是简单地顺序执行: print("dosometing") a=int(input()) b=int(in

  • javascript 面向对象编程基础:封装

    很长一段时间以来(这里本人要幸灾乐祸地说),js是"一种点缀的作用,完成很有限的功能,诸如表单验证之类,其语言本身也一直被当作过程化的语言使用,很难完成复杂的功能.".但是(这里本人要苦大仇深.痛心疾首地说),"而Ajax的出现使得复杂脚本成为必需的组成部分,这就对 JavaScript 程序设计提出了新的要求,很多Ajax应用开始利用JavaScript面向对象的性质进行开发,使逻辑更加清晰.事实上,JavaScript 提供了完善的机制来实现面向对象的开发思想."

  • 简述Python中的面向对象编程的概念

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象

  • PHP面向对象编程快速入门

    [摘 要]面向对象编程(OOP)是我们编程的一项基本技能,PHP4对OOP提供了良 好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和 规划好Web开发构架都是非常有意义的. 面向对象编程(OOP)是我们编程的一项基本技能,PHP4对 OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP 编程 能力和规划好Web开发构架都是非常有意义的.下面我们就通过实例来说明 使用PHP的OOP进行编程的实际意义和应用方法. 我们通常在做一个有数据库后

  • ASP面向对象编程探讨及比较

    ASP面向对象编程探讨及比较     选择自 RAINMAN_NET 的 Blog   关键字   ASP面向对象编程探讨及比较  出处 ASP是Microsoft于较早期推出的动态网页编程技术,但其结合ADO对数据库方便快捷的访问.结合XML.COM/ActiveX等其它技术 实现服务器多层结构的功能使它在今天还有着顽强的生命力,并且依然有着一定的发展.ASP.Net虽然在架构上完全不同于ASP,但它很多内建对象也是基 于ASP进行扩展的.网上有无数的介绍ASP的文章,却鲜有介绍ASP面向对象

  • PowerShell面向对象编程基础知识总结

    本文介绍PowerShell面向对象编程的基础知识,我们知道PowerShell里面的所有变量和输出都是对象,所以有必要在进行PowerShell编程时了解一下面向对象编程的基础知识. 面向对象编程的引入主要是为了解决软件复杂化带来的维护等问题,早在20世纪60年代,面向对象就已经出现了.虽然C语言并不支持面向对象的特性,但是使用C语言进行开发的程序人员已经将面向对象的核心思想应用到其中,因此我们更应该理解的是面向对象的思想,而不需要纠缠于语言本身. PowerShell是基于对象的脚本语言,因

随机推荐