java学习中对构造函数和对象的理解,及对象的运行路径分析


/*对象建立就会调用与之对应的构造函数。

构造函数的作用:可以用于给对象进行初始化。

构造函数的细节:
   当一个类中没用定义函数时,那么系统会默认给该类甲一个空参数的构造函数。

   挡在类中自定义了构造函数后,默认的构造函数就没有了。

   构造函数和一般函数在写法上有不同。

   在运行上也有不同。

   构造函数是在对象已建立就运行。给对象初始化。

   而一般方法是对象调用才运行,是对象添加对象具备的功能。

   一个对象建立,构造函数只运行一次。

   而一般方法可以被该对象调用多次

什么时候定义构造函数呢?
   当分析事物时,该事物存在具备一些特性或行为,那么将这些内容定义在构造函数中。
*/



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则省略的是(类名.函数)类名为函数所在类名。
*/

java学习中对构造函数和对象的理解,及对象的运行路径分析,布布扣,bubuko.com

java学习中对构造函数和对象的理解,及对象的运行路径分析

上一篇:微信小程序全选多选效果


下一篇:微信定时任务