/*对象建立就会调用与之对应的构造函数。
构造函数的作用:可以用于给对象进行初始化。
构造函数的细节:
当一个类中没用定义函数时,那么系统会默认给该类甲一个空参数的构造函数。
挡在类中自定义了构造函数后,默认的构造函数就没有了。
构造函数和一般函数在写法上有不同。
在运行上也有不同。
构造函数是在对象已建立就运行。给对象初始化。
而一般方法是对象调用才运行,是对象添加对象具备的功能。
一个对象建立,构造函数只运行一次。
而一般方法可以被该对象调用多次
什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或行为,那么将这些内容定义在构造函数中。
*/
class Person //构造函数
{
private String name;
private int age;
{
System.out.println("I love you!!!");
}
Person() //用于给对象初始化用对应:Person p1=new Person; :
{
System.out.println("A: name="+name+",age="+age);
}
//如果注释这个构造函数,将无法初始化
public void SetName(String name)
{
this.name=name;
}
Person(String n)
{
name=n;
System.out.println("B: name="+name+",age="+age);
}
Person(String n,int a)
{
name = n;
age = a;
System.out.println("C: name="+name+",age="+age);
}
}
class PersonDemo2
{
public static void main(String[] args)
{
//Person p1=new Person();
//Person p2=new Person("WeiChunYuan");
Person p=new Person("Longyz",20);
p.SetName("lisi");
}
}
/*
Person p=new Person("Longyz",20);
该句话都做了什么事情?
1,因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中。
2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在对内存中建立对象特有属性。并进行默认初始化。
5,对属性进行显示初始化。
6,对象进行构造代码块初始化。
7,对对象进行对应的构造函数初始化。
8,将内存地址付给栈内存的P变量。
*/
/*
方法优先于对象存在。方法就是各个解决问题的函数方法。
*/
/*
非静态调用函数的时候省略的是(this.函数)
而静态,即static则省略的是(类名.函数)类名为函数所在类名。
*/