构造方法中 属性与变量名重名 必须使用一个代替词 代替对象 即this关键字
this关键字的使用
是一个关键字 代替的是某一个对象 (当前调用属性或方法时的那个对象)
this既然代替的是一个对象 this可以调用什么?—-调用属性 方法
this可以调用构造方法吗?
要想调用构造方法 只能在另一个构造方法内调用构造方法
通过this();来调用 省略了构造方法的名字
且必须在构造方法程序的第一行
构造方法不能来回之间相互调用(编译就不行)
方法之间能否互相调用?
在写法上可以(编译好用) 执行时会产生错误StackOverflowError 栈溢出错误(方法执行时在栈内存中开辟临时执行空间)
this调用的过程可以放置在哪个位置写?
调用一般属性或一般方法这行代码 可以放在类中的任何成员位置(属性、方法、构造方法、块)中 上下位置随意
public class Person1 {
public String name;
public int age;
public String sex;
public Person1(String name,int age,String sex){
//若不定义构造方法 系统有默认提供无参数的构造方法
//构造方法可以在创建对象的同时实现某些事情
this();//调用构造方法this.Person1();省略了构造方法名 且只能放在第一行
this.name = name;
this.age = age;
this.sex = sex;
//若属性与对象同名 可以使用this关键字
}
//若要自己定义带参数的构造方法
//可以将系统提供的默认的无参数构造方法也一起写出来 构成构造方法重载
public Person1(){}
{
System.out.println("我是一个程序块");
//每调用一次构造方法就执行一次程序块
//可以有多个程序块
}
public void eat(){
this.sleep();
System.out.println("吃饭");
}
public void sleep(){
this.eat();//方法之间来回调用会产生栈溢出错误
System.out.println("睡觉");
}
public static void main(String[] args){
Person1 p1 = new Person1();//调用Person1类中的构造方法
//构造方法结构上没有返回值类型 但是有返回值 即对象
p1.eat();
}
}