zoukankan      html  css  js  c++  java
  • 五(五)、构造器 & 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

  • 相关阅读:
    【 js 基础 】【 源码学习 】源码设计 (更新了backbone分析)
    【 js 基础 】【读书笔记】作用域和闭包
    【 js 基础 】【 源码学习 】 setTimeout(fn, 0) 的作用
    入职一个月快速熟悉大型Vue项目经验感想
    Git 实习一个月恍然大悟合集
    不断更新:整理常见的闭包问题
    (转)当margin-top、padding-top的值为百分比时是如何计算的?
    2019年8月面试腾讯前端开发实习生记录
    vue-cli2.X中引入高德地图,将其设为全局对象
    学习整理:用webpack4.x构建基本项目
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13305414.html
Copyright © 2011-2022 走看看