Day 10

1: 构造方法

class Baby {
//成员变量
private String name;
private int id;

//可以自定义一个无参构造方法,提供给调用者使用
public Baby() {
cry();
System.out.println("无参的构造方法");
}


/**
* 实现一个有参数的构造方法两个参数
* @param n 给name属性初始化的参数
* @param i 给id属性初始化的参数
*/
public Baby(String n, int i) {
cry();
name = n;
id = i;
System.out.println("有两个参数的构造方法");
}

//为了符合实际情况,可以存在多种构造方法,初始化的成员变量不一样
public Baby(String n) {
//这里只是初始化了name属性 
cry();
name = n;
System.out.println("初始化name属性的构造方法");
}

public Baby(int i) {
//这里只是初始化了id属性
cry();
id = i;
System.out.println("初始化id属性的构造方法");
}

//提供对应的setter和getter方法
public void setName(String n) {
name = n;
}

public String getName() {
return name;
}

public void setId(int i) {
id = i;
}

public int getId() {
return id;
}

public void cry() {
System.out.println("哇哇大哭~~~");
}

public void sleep() {
System.out.println("哭完就睡~~~");
}
}
public class Demo1 {
public static void main(String[] args) {
//发现调用了一个无参的构造方法,但是这个方法并没有实现
Baby b1 = new Baby();
Baby b2 = new Baby("狗娃", 18);
Baby b3 = new Baby("狗蛋");
Baby b4 = new Baby(0);
}
}

2:构造方法成员方法区别Day 10

3:构造代码块


  构造代码块!
  {
  //执行的代码
  }
 
  作用:
  不管是通过调用哪一个该类的构造方法来初始化对象,都会自动执行构造代码快里面的代码
  等于说构造代码块里面的代码会对【当前类所有的对象】进行初始化操作
 
  要求:
  构造代码块放在成员变量之后,构造方法之前
 
  代码块:
  1. 构造代码块
  2. 局部代码块 (基本不用)
  3. 静态代码块!!!(后期用的还是蛮多的~~~ static JDBC)
 */
class Person {
private String name;
private int id;

//构造代码块!!!
{
cry();
}

4:局部变量和成员变量区别

Day 10

5:this关键字

 this关键字的作用:
  1. 解决就近原则,在Java中如果存在成员变量和局部变量的名字是一致的,就可以通过this来约束条件,用
  this.成员变量名 来区分到底是成员变量还是局部变量
 
  2. this可以在类内用来调用其他方法,this.方法名(参数) 【80%严谨】
通过this关键字来调用构造方法 
 
 this(实际参数)
 
  用this关键字调用构造方法的注意事项:
  1. 参数类型,参数的顺序以及参数的数量要和构造方法中一一对应,这样Java编辑器才能知道到底
  调用的是哪一个构造方法,这里采用方式是【函数/方法的重载】
 
  2. 在一个构造方法中通过this关键字调用另一个构造方法,那么这条语句必须在当前代码块的第一行
 
  3. 两个构造方法,不能通过this关键字相互调用。