面向对象(上)

类和对象的使用(面向对象思想落地的实现)

  1. 创建类,设计类的成员
  2. 创建类的对象
  3. 通过”对象.属性“或“对象.方法”调用对象的结构

对象的独立性

如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)

意味着:我们修改一个对象的属性a,则不会影响另外一个对象属性a的值

注意:

//已存在一个Person类
Person p1 = new Person();
Person p3 = p1;
p3.age = 10;
//这条语句是将p1对象保存的对象地址赋给p3,导致p1和p3指向了堆空间中的同一个对象实体
//给p3的属性赋值相当于修改p1中属性的值

类中属性的使用

  • 属性(成员变量) vs 局部变量

    • 相同点:

      • 定义变量的格式:数据类型 变量名 = 变量值;
      • 先声明后使用
      • 变量都有其对应的作用域
    • 不同点:

      • 在类中声明位置不同

        属性:直接定义在的一对{}内

        局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量

      • 关于权限修饰符的不同

        属性:可以在声明属性时,指定其权限,使用权限修饰符

        ​ 常用权限修饰符:private,public,缺省,protected

        局部变量:不可以使用权限修饰符(和方法权限相同)

      • 默认初始化值情况

        属性:

        ​ 整型(bute,short,int,long):0

        ​ 浮点型(float,double):0.0

        ​ 字符型(char):0(或''\u0000')

        ​ 布尔型(boolean):false

        ​ 引用数据类型(类,数组,接口):null

        局部变量:没有默认初始化值

        ​ 意味着我们在调用局部变量前一定要显示初值

        ​ 特别的:形参在调用时复制即可

      • 在内存中加载的位置:

        属性:加载到堆空间中(非static)

        局部变量:加载到栈空间中

类中方法的声明和使用

方法的声明:权限修饰符 返回值类型 方法名 (形参列表){方法体}

方法中不能定义方法

方法的重载

在一个类中允许存在一个以上的同名方法,只要他们的参数个数或参数类型不同即可(若仅仅是返回类型不同、仅权限修饰符不同、或仅参数名不同则不能构成重载

可变个数形参

  • 格式:数据类型 ... 变量名

  • 可以传入多个实参

  • 可变个数形参的方法与本来中方法名相同,形参不同的方法之间构成重载

  • 可变个数形参的方法与本来中方法名相同,形参类型也相同的数组之间不构成重载。二者不能共存

  • 可变个数形参在方法的形参中必须声明在末尾,且只能存在一个

构造器

  • 作用:
    1. 创建对象
    2. 初始化对象的信息
  • 说明:
    1. 如果没有显式定义的构造器的话,则系统默认提供一个空参的构造器
    2. 定义构造器的格式:权限修饰符 类名(形参列表){} ->权限默认为类权限
    3. 一个类中定义多个构造器,彼此构成重载
    4. 与类名相同
    5. 一旦我们显式定义了构造器,系统就不在提供默认构造器
    6. 一个类中至少有一个构造器

JavaBean

JavaBean是一种Java语言写成的可重用组件

  • 所谓JavaBean是符合如下标准的Java类:
    1. 类是公共的
    2. 有一个无参的公共构造器
    3. 有属性,且有对应的get/set方法

this的使用

  • 可以用来修饰属性、方法、构造器
    • this.属性或方法 表示当前对象的属性或方法。
      • 通常情况下省略this.
      • 特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用“this.变量”
    • this(形参列表)
      • 在类的构造其中可以这样调用本类中指定的其他构造器
      • 类的构造器中不能通过这种方式调用自己
      • 如果一个类中有n个构造器,则最多有n-1个构造器中使用了this(形参列表)
      • 必须声明在当前构造器的首行
      • 构造器中最多只能有一个这种声明

import的使用

  • import:导入
    1. 在源文件中显式的使用import结构导入指定包下的类、接口
    2. 声明在包的声明和类的声明之间
    3. 如果需要导入多个结构,则并列写出即可
    4. 可以使用"xxx.*"的方式,表示可以导入xxx包下的所有结构
    5. 如果使用的类或接口是java.lang包下的则可以省略 import结构
    6. 如果使用的类或接口是本包下的则可以省略 import结构
    7. 如果在源文件中使用了不同包下的同名的类,则必须至少有一个类以全类名的方式显示
    8. 如果使用"xxx.*"方式表明可以使用包下的所有结构。但是!如果使用的xxx包下的子包的结构,则仍需要显式导入
    9. import static: 导入指定类或接口中的静态结构:属性或方法
posted @ 2021-09-26 18:17  Quirkygbl  阅读(51)  评论(0编辑  收藏  举报