五(五)、构造器 & JavaBean &this

 一、构造器 constructor的作用:创建对象,初始化对象的属性;
 1.如果没有显示定义构造器的话,则系统默认提供一个空参的构造器,一旦显示定义了类的构造器,则系统就不再提供空参的构造器。权限同类的权限
 2.定义构造器格式: 权限修饰符 + 类名 (参数列表){}
 3.一个类中,定义多个构造器,彼此构成重载;
 4.一个类中至少会有一个构造器

例子如下代码 Person1中构造器;

二、JavaBean:类是公共的,有属性且有对应的get set方法,有一个空参构造器,是一种java语言写成的可重用的组件;是一种规范,表达实体和信息的规范,便于封装重用;

如下例子Person1就是一个JavaBean;

 三、 this关键字的使用:
  1.this 可以用来修饰:属性,方法、构造器;
  2.this修饰属性和方法:this理解为当前对象 或者 当前正在创建的对象(构造器的情况);
  在类的方法中,我们可以使用 “this.属性”,“this.方法”的方式调用当前对象的属性和方法;
  特殊情况下,若果方法的形参 和类的属性重名了,则必须显示使用 “this.属性”,表名此变量是属性,不是形参
  3.this调用构造器
      a.我们在类的构造器中,可以显示使用“this(形参列表)”的方式调用本类中指定的构造器
      b.构造器不能通过“this(形参列表)”方式自己调自己
      c.如果一个类中有n个构造器,则最多有n-1构造器使用了 “this(形参列表)”
      d.规定:“this(形参列表)”必须在当前构造器的首行,所以构造器内部也只能有一个“this(形参列表)”

如下例子的this.name = name;this 指向当前对象的name = 形参;

 1 public class Day10This16 {
 2 
 3     public static void main(String[] args) {
 4         Person1 person = new Person1();
 5         person.setAge(1);
 6         System.out.println(person.getAge());
 7         Person1 person1 = new Person1("Jerry",1);
 8     }
 9 }
10 class Person1{
11     private String name;
12     private int age;
13     public String getName() {
14         return name;
15     }
16     public void setName(String name) {
17         this.name = name;
18     }
19     public int getAge() {
20         return age;
21     }
22     public void setAge(int age) {
23         this.age = age;
24     }
25     
26     public void eat() {
27         System.out.println("人吃饭。。。。");
28         study();
29     }
30     
31     public void study() {
32         System.out.println("学习。。。");
33     }
34     public Person1(String name, int age) {
35         //super();
36         this(age);
37         this.name = name;
38         //this.age = age; //等同于 this("Tome");
39     }
40     public Person1() {
41         //super(); 
42     }
43     public Person1(String name) {
44         this();//调用当前的空参构造器
45         //super();
46         this.name = name;
47         
48     }
49     public Person1(int age) {
50         //super();
51         this.age = age;
52     }   
96 }

 补充:
 属性赋值:
 1.默认初始化值;
 2.显示赋值:如 String name = "Tom";
 3.构造器赋值;
 4.通过 “对象.方法” (set方法) “对象.属性”来赋值
 执行先后顺序 ,1——》2》3》4

原文地址:https://www.cnblogs.com/lixiuming521125/p/13305414.html