Javareview-day05-封装

Java 复习第五天

封装

  • 私有只是封装的一种表现形式
  • 封装可以增加代码的健壮性

构造函数

  1. 对象一建立,就会调用与之对应的构造函数(可以用于对象的初始化工作);
  2. 当一个类中没有定义构造函数时, 那么系统会默认给该类加入一个空参数的构造方法;
  3. 当在类中定义了构造函数后,默认的构造函数就会消失;
  4. 构造函数和在对象一建立就运行, 给对象初始化; 而一般方法是对象调用才运行, 是给对象添加对象具备的功能;

成员变量和局部变量

作用范围

  1. 成员变量作用于整个类中, 局部变量作用于函数中或者语句中;

  2. 在内存中的位置:

  3. 成员变量: 在堆内存中, 因为对象的存在, 才在内存中存在;

  4. 局部变量: 存在栈内存中 #### 其他区别 成员变量都有默认值, 在不赋值的情况下也可以参与运算.

匿名对象

  • 匿名对象使用方式之一: 当对对象的方法只调用一次时, 可以用匿名对象来完成, 这样写比较优化
  • 如果对一个对象进行多个成员调用, 必须给这个对象起个名字
  • 匿名对象可以作为实际参数进行传递

构造代码块

  • 作用:

    • 给对象进行初始化
  • 特点:

    • 对象一建立就运行, 而且优先于构造函数执行;
  • 和构造函数的区别:

    • 构造代码块是给所有对象进行统一初始化
    • 构造函数是给对应的对象进行初始化
    • 构造代码块中定义的事不同对象共性的初始化内容
  • 构造代码块示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    class User{
      private String name;
      //以下'{}'和其中的内容为构造代码块
      {
        private int id;
      }
    
    
    }
    

this 关键字:

  1. this 代表的是本类对象, 即 this 所在函数所属对象的引用
  2. this 语句: java this(xxx); 作用: this()用于构造函数之间的调用 特性: this() 必须在第一行,以保证在执行任何动作前,对象已经完成了初始化。
  3. 注意: 以下代码会进入死循环状态, 构造函数之间不可以循环调用
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
  class Persion{
    int age;
    String name;
    Persion(){
      this(name);
    }
    Persion(String name){
      this();
    }
  }
  class test{
    Persion p = new Persion();
  }

this 和 super 关键字的特点:

  1. this 和 super 关键字不能再 static 类型的方法或 static 的代码块中

  2. 原因 1: 加载顺序: static 类型的方法/代码块/方法会先于类加载, 所以当前时间点类对象并未初始化完成,所以无法调用

  3. 原因 2: 无法再静态代码中加载非静态的关键字

Licensed under CC BY-NC-SA 4.0
最后更新于 Apr 10, 2022 01:45 CST
Built with Hugo
主题 StackJimmy 设计