黑马程序员技术交流社区

标题: 关于面向对象的一些小疑惑 [打印本页]

作者: 芦青    时间: 2013-3-30 14:15
标题: 关于面向对象的一些小疑惑
本帖最后由 芦青 于 2013-3-30 15:25 编辑

在毕老师的视屏中学习到,定义类就是在定义属性和行为...我疑惑的是,定义一个类的时候,一定要定义属性和行为,我能不能定义一个全是属性不带行为的类?或者定义一个全是行为没有属性的类?..代码我试验时,没有报错..是不是,一个类里什么都不定义,系统会有一个默认的空参数的构造函数,这里的空参数意思是不是说类里的属性和行为都为空?还是指行为是空?

作者: 刘胜寒    时间: 2013-3-30 14:23
成员变量是为null的,但是成员函数不能为空,如果一个类继承父类,那么他继承的父类的成员函数不可能为空。我是这样理解的...
可以定义一个没有属性的类,也可一定义全是属性的类。这个是可以的,java中可以通过定义没有行为的类,来模仿c语言中的结构体...
也可以通过定义没有属性类,来模仿c语言中的函数...
每一个类都有一个默认的构造空参数。每一个类的都是Object的子类,而这个空参数的构造函数就是继承Object的。
作者: 芦青    时间: 2013-3-30 14:28
似水像火 发表于 2013-3-30 14:23
成员变量是为null的,但是成员函数不能为空,如果一个类继承父类,那么他继承的父类的成员函数不可能为空。 ...

成员函数可以为空啊,一个类什么都不定义,也能创建对象,只是没有意义而已,但函数也可以不写..默认的构造函数到底是代表什么?
作者: whs_nk    时间: 2013-3-30 14:36
构造函数的存在,首先是为了创建对象的,然后可以通过构造函数对类里的成员变量进行初始化,空参数意思不是说类里的属性和行为都为空,只是不通过构造函数初始化内部属性而已
作者: 小黑黑    时间: 2013-3-30 15:17
楼主,属性在某种意义上讲,是包含行为的哦,你说的属性其实指的是静态属性,如一个人的姓名,年龄;而你说的行为是指动态属性,如一个人学习的行为。
1、一个类是可以定义全是静态属性的,如枚举类,里面可全定义为各种常量值。
一个类也可以定义全是动态属性的,如工具类,里面全是静态的方法,比如java.util包中Arrays类或者Collections类。
其实这要看你的需求哦,如果你所用的类不需要有动态属性,即行为存在,可以定义没有属性的类,反之可定义全为静态属性的类。
2、如果你的一个类什么都不定义的话,是包含一个默认的构造函数的,并且这个类是默认继承Object类的,在Object里也有很多方法啊。所说的空参数,是不含静态属性值和动态属性的,举个反例来说,你定义一个Person类,那么人一出生就有哭的行为,你可以将这个行为定义在Person这个构造函数内部的,也可以定义在构造代码块中的。
不知道楼主明白没呢?希望对你有帮助哦,嘿嘿:P
作者: 芦青    时间: 2013-3-30 15:22
小黑黑 发表于 2013-3-30 15:17
楼主,属性在某种意义上讲,是包含行为的哦,你说的属性其实指的是静态属性,如一个人的姓名,年龄;而你说 ...

非常感谢,豁然开朗..{:3_64:}
作者: guobin_lu    时间: 2013-3-30 15:48
默认会有无参构造函数,如果手动编写构造函数之后,就不会有无参构造函数了
作者: 范天成    时间: 2013-3-30 18:39
想定义一个没有行为的类?先想办法把“上帝”干掉{:soso_e151:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2