day5_package

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;
        }
    }
    
posted @ 2021-01-11 22:17  zzz2077  阅读(46)  评论(0编辑  收藏  举报