ps:随着不断的理解,本文不定期更新,如有不理解的地方,请留言说明。
1.为什么会有构造方法()?
需求:介绍一类人,属性:姓名、性别
e.g. 为司机这类人说明他们的姓名name,性别sex.
当然用方法来解决这个问题:
两步精简于一步:setName(String name); setAge(int age);
每次都要设定这个司机姓名和性别,就显得非常麻烦和啰嗦。info(String name, int age)//注意,这并不是构造方法,因为info首字母没大写,所在并不是类名,也就不是构造方法
所以,可以考虑设定一个固定的结构:
第一句话说明:姓名 第二句话说明:性别
规定这种结构后,就可以直接在下面写姓名和性别。
这种方式类似于excel中建立一个表。
姓名 性别 王五 男 李四 女
以后,再想添加一个司机,就可以直接在下面添加一行,(张三,男)。
而不至于再添加说明:姓名、性别。(如下右边错误示例)
在第一列输入姓名,第二列输入性别,这就是相当于构造了一种结构。
姓名 性别 错误示例(再输入姓名,性别): 王五 男 姓名 性别 李四 女 张三 男 张三 男
而这是一种方法,故称之为:构造方法。
构造方法目的是:规定在默认的位置输入固定类型的值。
构造方法定义一定的属性,但不可能让所有的参数都添加进去,仅存储自身的属性..
其它的则使用setName来进行定义,需要用的时候再定义,这样可以最大的提升效率.
2.关于构造方法取名的事情?
构造方法的名称 = 类的名称
这样做的一个好处就是:可以见文知意,更方便理解。
同时,还可以避免与其它方法重名。
package com.junc.test; public class Test { public static void main(String[] args) { Car car = new Car("王五","男"); //调用构造方法,指定第一个值输入:姓名,第二个值输入:性别 System.out.println(car.getName()); } } class Car { private String name; private String sex; public Car() { //无参构造方法 } public Car(String name, String sex) { //有参构造方法 this.name = name; this.sex = sex; } public void setName(String name) { //怎么会有setXXX()方法 this.name = name; } public String getName() { //怎么会有getXXX()方法 return name; } } </span>
看到这里就奇怪了,有构造方法,还要set()方法与get()方法干嘛?
两者的区别就在于:
* 构造方法主要用于:定义一种规则,初始化值
* setXXX()与getXXX()主要用于:修改值,获取值。
3. 思考一个问题?
如果构造器参数有多个怎么办?
比如说,人有姓名、性别、年龄、体重、身高、出生年月、出生地址......
这种情况在做项目中必然是会遇到的,就算开始没有遇到,随着项目的需要,也是需要可扩展。
如果写成:
那么,当调用的时候,怎么保证不写错?public Car(String name, String sex,String age, String weight, String height, String born, String address) { this.name = name; this.sex = sex; .... }
你知道后面对应的哪个空写哪个么?Car car = new Car("王五","男",“?”,“?”,“?”,......);
万一写反了怎么办,写反后不会报错,但是结果不对呀。不报错才是最大的问题,都不容易找到问题出现在哪里!
最好的办法就是使用builder模式。
这是后期深入的时候再考虑的问题。
为什么要现在先提出这个问题呢?
因为我们在学习一样知识的时候,要知道它能做什么,它不能做什么。
先有一个概念,后期再深入。
ps:本贴随着学习的加强,不定期更新......