目录
- 一、构造函数的理解
- 1.一个类的创建
- 二、代码块的理解
- 三、this关键词的理解
一、构造函数的理解
1.一个类的创建
public class Person {
String name; // 姓名
int age; // 年龄
// 构造方法
Person(String name,int age){ //两个参数的构造函数
this.name = name; // 给对象赋予name值
this.age = age; // 给对象赋予age值
}
Person(int age){ //一个参数的构造函数
this.age = age; // 给对象赋予age值
}
Person(){ //无参的构造函数
}
public static void main(String[] args) {
Person p = new Person("张三",1); // 创建了Person类型的p对象,并且调用构造方法赋予该对象属性值
System.out.println("姓名: " + p.name + " 年龄: " + p.age); // name = 张三, age = 1;
//这个小孩刚出生的时候已经有了姓名和年龄
}
以上述例子来说,在类的创建过程中包含了两个基础属性,姓名和年龄,但是都没有初始值。
类在被实例化的时候,如果没有构造函数,会自动的执行无参构造函数。。
一个类中可以有多个构造函数,会根据参数的个数自动识别执行哪个。
如上述代码中,在实例化的过程中有两个参数,所以自动执行含有两个参数的构造函数。
二、代码块的理解
代码块就是在构造函数之前运行的代码区域,只要实例化类就会自动运行的区域。
class Perosn{
private int id;
private String name;
private int age;
{
happy();// 每个Person对象创建出来都会执行这里的代码
}
public Perosn(){
happy();
}
public Perosn(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void happy(){
System.out.println("哈哈哈....");
}
}
在上面的类中,只要被实例化都会自动执行{ happy(); // 每个Person对象创建出来都会执行这里的代码 }
这一段代码。
三、this关键词的理解
实例化某一个类之后,类中的实例变量将被创建,在各方法中会存在相同变量名的局部变量
如果在方法内局部变量的命名与实例变量的命名相同,根据内部屏蔽外部的原则,实例变量在这个方法内暂时失效。这时如果想在该方法中使用实例变量,则需要在变量名前显示的加上"this.",用来指明此变量是实例变量。默认格式如下(前者指向的是实例变量,后者指向的是局部变量):this.变量名=变量名。
Person(String name,int age){ //两个参数的构造函数
this.name = name; // 给对象赋予name值
this.age = age; // 给对象赋予age值
}
例如在这个构造函数中,this.name 指的是自己,也就是类中的实例变量。name指的是构造函数中的传入参数。
下面给一个实例变量与局部变量的改变过程的案例。
public class Test {
String s = "Hello";
public Test(String s) {//构造方法中的参数,与类中成员变量s重名.
System.out.println("s = " + s); // 输出的是HelloWorld!
//这里的s就是传参传入的值。
System.out.println("onethis.s = " + this.s); //输出的是Hello
//把参数值(局部变量)赋给成员变量,成员变量的值改变
this.s = s;
System.out.println("twothis.s = " + this.s); //输出HelloWorld!
}
public static void main(String[] args) {
Test x = new Test("HelloWorld!");
//验证成员变量值的改变
System.out.println("最后的s=" + x.s); //输出HelloWorld!
}
}