5/7知识清单

5/7知识清单

单例模式
  • 饿汉单例设计模式

    public class SingleInstance {
        private static SingleInstance instance = new SingleInstance();
        
        private SingleInstance() {}
        
        public static SingleInstance instance() {
    		return instance;        
        }
    }
    
    1. 定义一个类,把构造器私有
    2. 定义一个静态变量存储一个单例对象,把单例对象私有化,直接new一个单例对象
    3. 提供getInstance()方法返回静态单例对象变量
  • 懒汉单例设计模式

    public class SingleInstance {
        private static SingleInstance instance;
        
        private SingleInstance() {}
        
        public static SingleInstance getInstance() {
            if(instance == null) {
                instance = new SingleInstance();
            }
            return instance;
        }
    }
    
    1. 定义一个类,把构造器私有
    2. 定义一个静态变量存储一个单例对象,把单例对象私有化
    3. 提供一个getInstance()方法,在方法中生成单例对象并返回
重载

​ 发生在同一个类中(或者父类和子类之间),方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以 不同。

重写

​ 重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。

​ 1. 方法名、参数列表必须相同,子类方法返回值类型应比父类方法返回值类型更小或相等,抛出的异常范围小于等于父类,访问修饰 符范围大于等于父类。“两同两小一大”

​ 2. 如果父类方法访问修饰符为 private/final/static 则子类就不能重写该方法,但是被 static 修饰的方法能够被再次声明。

​ 3. 构造方法无法被重写

枚举
public enum Season {
    //第一行必须罗列枚举类的对象名称
    SPRING, SUMMER, AUTUMN, WINTER;
}
封装

​ 封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以 被外界访问的方法来操作属性。

继承

​ 不同类型的对象,相互之间经常有一定数量的共同点。同时,每一个对象还定义了额外的特性使得他们与众不同。

​ 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能 选择性地继承父类。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 , 提高我们的开发效率。

关于继承如下 3 点请记住:

​ 1. 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有

​ 2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

​ 3. 子类可以用自己的方式实现父类的方法。

多态

​ 多态,顾名思义,表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。

多态的特点:

  • 对象类型和引用类型之间具有继承(类)/实现(接口)的关系;

  • 引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;

  • 多态不能调用“只在子类存在但在父类不存在”的方法;

  • 如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。

多态中成员访问的特点:

  • 方法调用:编译看左边,运行看右边
  • 变量调用:编译看左边,运行看左边。(多态侧重行为多态)

优势:

  • 在多态形式下,右边的对象可以实现解耦合,便于扩展和维护
  • 定义方法的时候,使用父类型作为参数,该方法就可以接收父类的一切子类对象
内部类

​ 定义在一个类里面的类

分类:

  1. 静态内部类

    • 有static修饰,属于外部类

    • 静态内部类创建对象的格式:外部类名.内部类名 对象名 = new 外部类名.内部类构造器;

      Outer.Inner in = new Outer.Inner();
      
  2. 成员内部类

    • 无static修饰,属于外部类的对象

    • 成员内部类创建格式:外部类名.内部类名 对象名 = new 外部类构造器.new 内部类构造器;

      Outer.Inner in = new Outer().new Inner();
      
    • 成员内部类中访问外部类的属性:外部类名.this.属性;

      String name = Outer.this.name;
      
  3. 局部内部类

  4. 匿名内部类

    本质是没有名字的局部内部类,定义在方法中、代码块中...,目的是为了简化代码编写

    格式:

    new 类/抽象类/接口() {
        重写方法
    };
    
    Employee e = new Employee() {
      public void work() {
          
      }  
    };
    e.work();
    

    匿名内部类可以作为方法的实际参数进行传输

日志
  • 日志规范接口:

    • Commons Logging,简称JCL
    • Simple Logging Facade for java,简称slf4j
  • 日志框架:

    • Log4j
    • JUL
    • Logback
  • Logback日志框架

  • Logback需要使用的模块

    • slf4j-api:日志规范
    • logback-core:基础模块
    • logback-classic:log4j的一个改良版本,同时它完整实现了slf4j
  • Logback快速入门

    1. 导入Logback相关jar包,添加到项目依赖库中

    2. 在src文件夹下创建Logback核心配置文件logback.xml

    3. 在代码中获取日志对象

      public static final Logger LOGGER = LoggerFactory.getLogger("类对象");//当前调用日志的类.class
      
    4. 使用日志对象输出日志信息

  • Logback日志输出位置、格式设置

    • 输出到控制台

      <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
      
    • 输出到文件

      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
      
  • 日志级别

    • TRACE<DEBUG<INFO<WARN<ERROR;默认级别debug
    • OFF:全关,ALL:全开
    • 作用:控制系统中哪些日志级别可以输出,只输出级别不低于设定级别的日志信息
    • 标签中level属性中设置日志级别
posted on 2022-05-07 18:22  .爱学习的小青年  阅读(35)  评论(0)    收藏  举报