构造方法就是在你创建对象的时候产生的一种方法,它的方法名要与类相同,那么既然它是一种方法,你可以把它拿普通方法使用,传参的时你可以在创建对象的时候给它赋值。它的作用是初始化对象。
1,构造方法代码演示:
class Wanjia {
private static String name;
private static char sex;
private static int age;
Wanjia() {
}
Wanjia(String a, char b, int c) {
name = a;
sex = b;
age = c;
}
public static void introduce() {
System.out.println("name=" + name + " sex=" + sex + " age=" + age);
}
}
class Demo {
public static void main(String[] args) {
Wanjia w = new Wanjia("lishuai", '男', 20);
w.introduce();
}
}
当局部变量与成员变量重复的时候我们使用this关键字来代表当前对象。
this()方法使用来调用重写的构造方法的,只能在构造方法第一行写,只能写一次。
2,通过this()调用重写的构造方法:
class Person1 {
private int age;
private String name;
Person1(int age) {
if (age < 0) {
System.out.println("你输入的年龄非法");
this.age = age;
}
}
Person1(int age, String name) {
this(age);
this.name=name;
System.out.println(this.name);
}
public int getter() {
return this.age;
}
}
public class Demo3 {
public static void main(String[] args) {
Person1 p = new Person1(80, "lishuai");
System.out.println(p.getter());
}
}
这段代码有this(age);这个东西,这个东西是干什么,是在构造方法中调用另一个构造方法的,只能在代码的第一行出现。这段代码运行的结果为lishuai 0
为什么?为什么我我有return给main方法啊,因为你age初始化的位置出错,你this.age是在if语句里写的,只有小于0的时候才能初始化。
3,通过构造方法解决属性的不确定因素:
package com.lishuai.fuxi.www;
//通过构造方法解决属性的不确定因素
class People6{
private int age;
private String name;
//该构造方法为对象初始化
public People6(int age,String name){
this.age=age;
this.name=name;
System.out.println(this.age+"====="+this.name);
}
//当不知道姓名的对象使用该构造方法
public People6(int age){
this(age,"无名氏");
}
//当不知道年龄
public People6(String name){
this(-1,name);
}
}
public class GouZao2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
People6 p=new People6(20,"lishaui");
People6 p2=new People6("lishaui");
System.out.println(p);
System.out.println(p2);
}
}