1.对象创建方式一(无参创建)
总结:创建无参构造函数对象时,需要在main中用调用赋值的方法传入实参,代码如下:
//对象名.属性名 = 值 ;
p1.name = "张三"
p1.age = 24 ;
p2.name = "李四" ;
p2.age = 27 ;
2.对象创建方式二(有参构造创建)
总结:1)有参构造函数在创建对象时直接在实参中写入属性名
2)类语法:public class 类名{}
3)构造函数语法:public 类名(形参列表){},代码如下:
//在创建对象时写入实参
Person p1 = new Person("name","age","color")
//创建实参构造函数
//构造函数中实参和形参建立联系
public Person(String name,int age,String color){
//将成员变量与形参建立联系,至此成员变量 实参 形参之间被连接
this.name = name;
this.age = age ;
this.color= color ;
}
3.通过人吃东西理解this的用法
public class TextPerson01 {
public static void main(String[] args) {
Person p1 = new Person();
//p1.name将栈中对象名与堆中方法属性建立联系,p1.name = "张三"将常量区的地址与堆栈建立联系
p1.name = "张三";
p1.age = 25 ;
Person p2 = new Person();
p2.name = "李四";
p2.age = 27 ;
//1)对象调方法
//2)谁调用方法里的this,this就代表谁,因此eat方法和text中this分别代表p1 p2
p1.eat();
p2.text();
}
//类的位置:类中方法以外
public void Person(){
String name ;
int age ;
//无参构造
public Person(){
}
void eat(){
String name = "菠菜面" ;
//1)用this区分成员变量和局部变量(菠菜面)
//2)谁调用this所在的方法,this就代表谁因此此处的this指p1
sout(this.name+"吃了一碗"+name);
}
void text(){
//1)this调用age属性
//2)谁调用this所在的方法,this就代表谁,此处this指p2
sout(this.age);
//1)this调用方法
//2)此处this指p2
this.eat();
}
}
}
代码总结:
1)核心思想:谁调用this所在的方法this就代表谁.
2)this用以区分成员变量和局部变量,当局部变量名与成员变量名相等时加this区分,而二者名字不同时无需加this
3)this用于在本类中调用本类的属性和方法,此时this可省略不写.
4.通过张阿姨遛狗案例对形参是(类)的理解
总结:1)在此案例中,张阿姨类中的遛狗方法中要实现遛狗就需要将狗给传进去因此形参就为狗.
2)要实现遛狗这个动作就需要在方法体中加入狗这个变量,此为形参在方法体中的实现.
3)若要实现张阿姨遛多只狗则形参的个数就为狗的个数.
4)在方法体中this.name表示张阿姨 而dog.name表示对象调属性,这样狗对象 实参 形参就建立了联系.代码展示如下:
//Person中的遛狗方法代码段,若数据类型为类则变量就为对象名,形参中有两个类意味着方法体中将实现两只狗
public void lgou(Dog dog,Dog dog01) {
//方法体中dog01指代狗对象dog01.name表示dog01调用属性,这样就实现了实参 形参 对象名之间的连接
System.out.println(this.name+"牵着"+dog.name+"和"+dog01.name+"在公园遛弯");
}
//main方法中,若要实现张阿姨遛狗,首先得有张阿姨和狗两个对象
//张阿姨要实现遛两只狗,实参中应为狗类类型的狗对象
public static void main(String[] args) {
Person p1 = new Person("张阿姨", "女", 48);
Dog dog = new Dog("旺财", "黑色");
Dog dog2 = new Dog("来福", "花色");
p1.lgou(dog2,dog );
}