[Java笔记]day10

day10

review

  1. 什么是重载?

    两同一不同:同一个类、相同方法名;参数列表不同

  2. 如何确定调用的方法?

    方法名 --> 参数列表

  3. Java方法中参数传递机制的具体实现?

  • 基本数据类型:数据值
  • 引用数据类型:地址值(地址值中包含变量的数据类型)
  1. return的使用
  • 结束方法
  • 针对有返回值的方法,还可以返回数据
  1. 内存结构
  • 栈:局部变量
  • 堆:new出来的结构(对象(非static的成员变量)、数组)
  1. 变量
  • 局部变量:方法内、方法形参、构造器内、构造器形参、代码块内
  • 成员变量:类的一对{}

封装性

  1. 引入

    当我们创建一个类后,我们可以通过对象.属性的方式对对对象进行赋值,这里的赋值操作要收到属性的数据类型存储范围的制约,除此之外,没有其他条件的制约。但在实际问题中,我们往往要给属性赋值增加额外的限制条件,但这个条件不能再属性声明时体现,因此只能通过方法进行限制条件的添加。同时我们需要避免用户再使用对象.属性的方式进行赋值,则需要将属性声明为private
    上述问题即体现了封装性

  2. 封装性的体现之一

    将类的属性xxx私有化(private),同时提供公共(public)的方法来获取(getXxx)和设置(setXxx)此属性的值。

其他封装性的体现

  • 不对外暴露的私有方法
  • 单例模式
  1. 权限修饰符

封装性的体现需要权限修饰符配合

  • Java规定的四种权限(从小到大):private缺省protectedpublic

[Java笔记]day10

  • 4种权限可以用来修饰类及类的内部结构
    • 4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
    • 修饰只能使用:public缺省

[Java笔记]day10

  1. 总结

    Java提供四种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时可见性的大小

构造器(Constructor)

  1. 作用
    • 创建对象
    • 初始化对象的属性
  2. 说明
    • 如果没有显式地定义类的构造器,则系统默认提供一个空参的构造器
    • 定义格式:权限修饰符 类名(形参列表) {初始化语句}(构造器与类同名)
    • 一个类中的多个构造器,蔽词构成重载
    • 一旦显式地定义了类的构造器,系统就不再提供默认的空参构造器
    • 一个类中,至少有一个构造器,这个构造器可以是默认的,也可以时自定义的
    • 默认的空参构造器的权限修饰符与类的权限修饰符相同

属性的赋值过程

  1. 可以赋值的位置
    ①默认初始化
    ②显式初始化
    ③构造器初始化
    ④通过对象.方法对象.属性赋值

    • 以上操作的先后顺序: ① --> ② --> ③ --> ④
    • 其中①、②、③只执行一次

JavaBean

  1. JavaBean是一种Java语言写成的可重用组件
  2. 标准
    • 类是公共
    • 有一个无参的公共的构造器
    • 属性,且有对应的get、set方法

this

  1. this可以用来修饰属性、方法、构造器

  2. this修饰属性和方法/构造器时,可以理解为:当前对象当前正在创建的对象

    • 在类的方法/构造器中,可以使用this.属性this.方法来调用当前对象/正在创建的对象的属性和方法,但通常情况下我们选择省略this
    • 特别地,当方法/构造器的形参和类的属性同名时,我们必须显式地使用this.变量的方式,表明此变量是属性而非形参
  3. this调用构造器

    • 在类的构造器中,我们可以使用this(形参列表)的方式,调用本类中指定的其他构造器
    • 构造器不能用this(形参列表)的方式调用自己
    • 如果一个类中有n个构造器,则最多有n-1个构造器使用了this(形参列表),防止成环
    • this(形参列表)必须声明在当前构造器的首行,换言之,构造器内部最多只能声明一次this(形参列表)用来调用其他构造器

package

  1. 为了更好的实现项目中的类的管理,提供**包(package)**的概念
  2. 使用package声明类或者接口所属的包,声明在源文件的首行
  3. 包名,属于标识符,要遵循标识符的命名规则和命名规范,并且要见名知意
  4. .一次代表一层文件目录

同一个包下,不能定义同名的类、接口;不同的包下可以.

[Java笔记]day10

import

  1. 在源文件中,显式地使用import结构指定包下类、接口
  2. 声明位置:声明在包的声明和类的声明之间
  3. 如果需要导入多个结构,则并列写出即可
  4. 可以使用xxx.*的方式表示可以导入xxx包下的所有结构
  5. 如果使用的类或接口是java.lang包下的,则使用时无需导入,可以省略import
  6. 如果使用的类或接口时本包下定义的,则可以省略import 结构
  7. 在源文件中,如果使用了不同包下的同名的类,则需要以全类名的方式显示
  8. 使用xxx.*的方式,表明可以调用xxx包下的所有结构,但是对于xxx子包下的结构,在使用时仍需要显式地import
  9. import.static导入指定类或接口中的静态结构(属性或方法,import的落脚点是类或者接口)

MVC设计模式

[Java笔记]day10