1.构造方法解决问题
构造方法很简单,修饰符(默认public)+类名(一定是类名并且一模一样)(){
}
构造方法也是方法,所以也可以参数和返回值,也可以被重载;
简写类名(){
}
不写修饰符;系统会默认一个public;
性质:构造方法在调用类时执行,即对类进行实例化的时候执行,或者new 类名的时候就执行;
执行顺序先于属性和类的方法。
补充:类中出现的关键字 this 在Java里经常用到;因为经常很多参数数据之间在传递影响,为了区分数据所属就是用this,这样
都知道所使用的数据是从哪里调用的,所以this代表的就是本类所在,即所在类。
属性私有通过set方法get属性赋值,通过get方法调用属性。
对属性有一定限制可以在get或者set方法里进行编写,如:年龄不能小于0岁,不能大于200岁(一般情况下)且为整数;这些约束条件可以写在get和set方法里;例如:一个简单的构造方法:
结果:
当大
构造方法一般作为初始化使用:
即,在构造方法里给属性赋值;
以上例子为例:
使用this赋值(第一种);
public Student(){
this.name="名字";
this.age=年龄;
}
(第二种,通过传参):例如:
public Student(String name,int age){
this.name=name;
this.age=age;
}
通过第二种例子可以发现使用this的好处就是能够区分变量是本类的属性还是传进来的参数。
2.代码块的初始化
前面已经讲了构造方法可以初始化变量;但还有其他的比较方便的初始化方法;
代码块:使用花括号{}括起来的代码;执行逻辑代码一般都在花括号里,不管是方法,还是流程控制语句中;
在类里使用代码块会先于构造方法之前进行执行,即最先执行。
一般写法:
{
代码块;
}
前面可以添加修饰符,一般默认是(public),但一般不写,一般写static修饰符;称为静态代码块;
静态:所放的数据在静态方法区(单独的内存分配区),主要作用,是静态化;举个例子:
静态:就像学校里发的校牌或者学生证,改变的时候,所有地方的学生证或者校牌都会发生改变,并且一直保留,直到退出程序,非静态变量,一般在这个类是一个值,在另一个类又是一个值,静态变量在哪都一样。
所以:初始化看使用者情况:例如
输出:
可见,构造方法并没用什么打印的;然而代码却5去执行打印。一般在代码块中直接给属性等变量初始化。