package com.msb2;/*** @Auther: msb-zhaoss*/public class Person {//构造器:没有任何参数的构造器我们叫做:空参构造器--》空构造器public Person(){/*age = 19;name = "lili";height = 169.5;*/}//属性:String name;int age;double height;//方法:public void eat(){System.out.println("我喜欢吃饭");}}
public class Test {//这是一个main方法,是程序的入口:public static void main(String[] args) {//创建一个Person类的具体的对象/实例/实体:/*创建对象的过程:1.第一次遇到Person的时候,进行类的加载(只加载一次)2.创建对象,为这个对象在堆中开辟空间3.为对象进行属性的初始化动作new关键字实际上是在调用一个方法,这个方法叫构造方法(构造器)调用构造器的时候,如果你的类中没有写构造器,那么系统会默认给你分配一个构造器,只是我们看不到罢了。可以自己显式 的将构造器编写出来:构造器的格式:[修饰符] 构造器的名字(){}构造器和方法的区别:1.没有方法的返回值类型2.方法体内部不能有return语句3.构造器的名字很特殊,必须跟类名一样构造器的作用:不是为了创建对象,因为在调用构造器之前,这个对象就已经创建好了,并且属性有默认的初始化的值。调用构造器的目的是给属性进行赋值操作的。注意:我们一般不会在空构造器中进行初始化操作,因为那样的话每个对象的属性就一样了。实际上,我们只要保证空构造器的存在就可以了,里面的东西不用写*/Person p = new Person();System.out.println(p.age);System.out.println(p.name);System.out.println(p.height);Person p2 = new Person();System.out.println(p2.age);System.out.println(p2.name);System.out.println(p2.height);}}
构造器的重载
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("我喜欢吃饭");}}
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);}}
注意
如果一个类写了有参构造器,那么一定要写无参构造器,不然会出问题。
