构造函数:
即构建创造对象时调用的函数。在new的时候自动执行,给对象进行初始化。创建对象都必须要通过构造函数初始化。(有参和无参)
一个类中如果没有定义过构造函数,那么类中会有一个默认的空参数构造函数。
特点:1.函数名与类名相同。
2.无返回值。
实例变量的默认值:
原始数字类型的实例变量默认值为0,布尔型变量为false,引用变量为null。
例:
class A { private int i; private int j; public A() { //System.out.printf("嘿嘿! "); } //构造函数 public A(int a, int b) { i = a; j = b; System.out.printf("无参构造函数被调用了! "); } public void show() { System.out.printf("i = %d, j = %d ", i, j); } } class TestConst_2 { public static void main(String[] args) { A aa = new A(1, 2); //在定义的同时进行初始化,可用构造函数来完成。 A aa3 = new A(); } }
This关键字:
当成员变量和局部变量重名,可以用关键字this来区分。
this : 代表对象。代表哪个对象呢?当前对象。
this就是所在函数所属对象的引用。
简单说:哪个对象调用了this所在的函数,this就代表哪个对象。
this也可以用于在构造函数中调用其他构造函数。
注意:只能定义在构造函数的第一行。因为初始化动作要先执行。
例:
class Person { private String name; private int age; Person() { name = "baby"; age = 1; System.out.println("person run"); } Person(String name) { this(); this.name = name; } Person(String name,int age) { this.name = name; this.age = age; } public void speak() { System.out.println(this.name+":"+this.age); } /* 判断是否是同龄人。***(思想)只用了一个参数*** */ public boolean compare(Person p) { /* if(this.age==p.age) return true; else return false; */ return this.age==p.age; } } class ThisDemo { public static void main(String[] args) { Person p1 = new Person("aa",30);// Person p2 = new Person("zz",12); p2.compare(p1); // new Person(); // Person p = new Person("旺财",30); // p.speak(); // Person p1 = new Person("小强"); // p1.speak(); } }