day5学习
封装
- 作用:提高程序的数据安全
- 操作流程(定义):属性私有化,提供公共的getter/setter方法访问私有属性
- getter/setter实体方法放到类最下面,可自动生成
- 给set,get 限制来限制输入输出
- 删去set,get取消可读可修改性,用构造方法实现访问
- 数据安全体现:
- 数据校验:数据错误
- 数据访问:不能乱改
初始化块
-
把所有构造方法都包含的语句放入初始化块中
-
在源代码中存在,编译后写到每一个构造方法中,初始化块消失
-
编译代码维护和扩展
-
先于构造方法执行
构造方法
-
写在属性后面方法前面(代码规范)
-
当类的属性一创建就要有值时使用构造方法
-
作用:用于完成属性的数据初始化操作(赋初始值)
-
调用时间: 对象实例化时调用
-
存在: 若用户不定义,系统自动生成一个无参的空的构造方法(用户写就没有系统的了)
-
特定:方法名和类名相同.没有返回值类型
public ClassName (类型 属性名){ this.属性名 = 属性名; }//this 指当前类,使得能区分类的属性和参数属性
-
this 与 super
- this 值类本身
- super指父类
-
通过方法重载可已定义多个构造方法
-
方法重载: 同一个类中,方法名相同, 参数不同(个数不同|类型不同|顺序不同)没有参数名(属性名)不同,返回值类型和权限无关的方法
tips:属性值的变化过程 :默认值->初始化块->构造方法值->setter方法
包
- 概念:包的本质是一系列嵌套的文件夹
- 命名规则:是公司域名的反写+项目名+功能名,全部小写
- 作用:
- 整理代码
- 区分同名类
- 进行权限控制
- 常见的包:
- java.util (java的工具类)
- java.io (io操作)
- java.net (网络开发)
- java.lang(默认包) 包含了开发所需要常用的各种类,不需要导入,不同包下也可默认引用 如String,Match
- 关键字:
- package : 描述当前类所处的包的名称
- import: 引入其他包中的类
- 调用类时采用就近原则,所以注意取类名不要取常用类名
权限修饰符
- public 非子类可访问
- protected 子类可访问 非子类不可访问
- dafault(默认,其实就是什么都没写的时候) 包可访问,子类不可访问
- private 只有类内可访问
static
-
属性: 类属性(静态属性)
-
方法: 类方法
-
与面向对象编程思想相违背,除非是 1.工具类 2.单例模式才用
-
调用时机(加载顺序): static 修饰的东西在类加载的时候初始化类属性和类方法(类装载器中)非static加载在解释器中
-
非static可用static ,static不能用非static
-
初始化块也可为static属性赋初值
-
用静态块为static属性赋初值
static{ }
-
静态块只执行一次,初始化块new几次就执行几次
-
单例模式
-
单例类只能有一个实例
-
单例类必须创建自己的唯一实例
-
单例类必须给其他对象提供这一实例
-
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。单例模式可以分为懒汉式和饿汉式等多种形式。
-
一个私有的构造方法(核心)
-
饿汉式
public class Singleton{ private Sinleton(){} //单例模式只有一个私有的构造方法,保证别人不能实例化对象 private static Singleton sigle = new sinlenton();//只有自己能实例化(私有的静态属性) pubilic static singleton getInstance(){ return single; }//一个公有方法返回对象 }//不管用不用都创建类,初始化时就已经自己实例化
-
懒汉式
//在第一次调用的时候实例化自己 private class Singleton{ private Sinleton(){} private static Singleton single = null; public static Sinleton getInstance(){ if(single == null){ single = new Singleton(); } return single; } }