JAVA-初步认识-第七章-构造函数-细节

一. 区别1

在描述类中,对于一个成员变量,它始终是有两个函数的,set和get。比如说name变量,就有setName函数和getName函数,设置值和取值。

这里探讨set函数和构造函数,对name的影响。两者功能是一样的,都是赋值用的。

现在想问的是,如果写了构造函数后,setName函数还需要写么?

到底要不要写setName,通过下面的截图来讲解。对象刚创建的时候,给name赋一个值,叫做“旺财”,后来嫌名字不好听,想要改名,我们不可能再通过构造函数来赋值,所以setName必须是存在的。当然,也可以通过构造函数来实现改名,但是实在是不合理(下面截图所示)→对构造函数理解有问题,构造函数只能用一次。这些知识点都是一环扣一环,完全不给漏洞

 正确的写法应该是下面这样的。这就意味着,构造方法只能用一次,而一般方法可以用多次。

重点:构造方法和一般方法所起的作用和承担的意义是不同的。构造方法是在对象创建时,初始化赋值的,对象刚诞生需要的内容都是通过构造方法来的。一般是变量经常需要使用的,用的时候调用,不用的时候就搁置,比较灵活。

具体调用哪一个构造函数,就要看你需要什么样的初始化了。person类里一共提供了三种初始化方式,你只能按照三种中的一种来进行初始化。(哪三种?三种之间的区别在哪?)

二. 区别2

构造函数能调用一般方法么?比如下面的方法。可以的。

 比如,下面这个就是,构造函数调用一般方法,这是可以的。但是,反过来就不行,一般方法不能调用构造函数。speak方法不能直接调用构造函数。

但是,反过来就不行,一般方法不能调用构造函数。speak方法不能直接调用构造函数。为什么不行?构造函数是用于对象的初始化的,没有新建对象,调用构造函数是不对的。如果非要调用,就必须是new person(),

三. 区别3

如果在构造函数的前面写上void可以么?

编译之后,没有问题。但是性质变了,加上void就代表着它是一般函数了,而不是构造函数,构造函数格式很简洁,没有其他修饰符。

而且这里还有一点,一般函数的函数名也可以是类名。其实函数取名,没有什么要求,只有构造函数必须是和类名相同。

严谨的java语言要求,写一般函数时,第一个单词首字母小写,而构造函数的首字母大写,构造函数是随类名走的。通过名称就能区分,它是什么类型函数。

四. 区别4

构造函数里有return语句吗?

可行还是不可行,通过编译器可以看出程序是否有语法错误。

return意味着结束函数,最后一句永远执行不到,就是废话。java不允许有废话的出现。这也表明return存在是可以的。执行到return,就结束。

 看下面的调用函数,如果取名叫“旺财”,岁数是“-20”岁。在构造函数中需要对输入的数据进行判断,if是负数,不给你初始化(不给初始化,可能是说,name,age都没有赋值,构造函数就直接退出了)。那么带来一个问题,不给初始化,程序能不能执行呢?

这里又诞生一个问题,创建对象时,构造函数是必须要有的么

 构造函数里面有return,但是很少见。当在new对象的时候,往里面输入数据,都来自客户,收取的数据都是经过验证的,所以不需要在构造中再进行控制(控制退出,需要return)。

posted @ 2017-10-12 22:34  前锋营  阅读(308)  评论(0编辑  收藏  举报