# JAVA中的构造器与PHP中的构造函数是一模一样的,所有都是一样的
#
## 自己写的构造器重载
## 构造器前面可以不加public
~~~
ackage com.msb2;
public class Person {
String name;
int age;
double height;
public Person(String name,int age,double height){ //构造器前面可以不加public
this.name=name;
this.age=age; //构造器赋值 this 代表正在创建的对象
this.height=height;
}
//方法:
public void eat(){
System.out.println("吃饭");
}
}
~~~
# 下面是老师的笔记:
#
```
package com.msb3.msb2;
/**
* @Auther: msb-zhaoss
*/
public class Person {
//属性:
String name;
int age;
double height;
//空构造器
public Person(){
}
public Person(String name,int age,double height){
//当形参名字和属性名字重名的时候,会出现就近原则:
//在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象
this.name = name;
this.age = age;
this.height = height;
}
public Person(String a,int b){
name = a;
age = b;
}
//方法:
public void eat(){
System.out.println("我喜欢吃饭");
}
}
```
```
package com.msb3.msb2;
/**
* @Auther: msb-zhaoss
*/
public class Test {
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
/*
1.一般保证空构造器的存在,空构造器中一般不会进行属性的赋值操作
2.一般我们会重载构造器,在重载的构造器中进行属性赋值操作
3.在重载构造器以后,假如空构造器忘写了,系统也不会给你分配默认的空构造器了,那么你要调用的话就会出错了。
4. 当形参名字和属性名字重名的时候,会出现就近原则:
在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象
*/
Person p = new Person();
/*p.age = 19;
p.name = "lili";
p.height = 180.4;*/
Person p2 = new Person("lili",19,180.4);
System.out.println(p2.age);
System.out.println(p2.height);
System.out.println(p2.name);
}
}
```