5/7知识清单
5/7知识清单
单例模式
-
饿汉单例设计模式
public class SingleInstance { private static SingleInstance instance = new SingleInstance(); private SingleInstance() {} public static SingleInstance instance() { return instance; } }- 定义一个类,把构造器私有
- 定义一个静态变量存储一个单例对象,把单例对象私有化,直接new一个单例对象
- 提供getInstance()方法返回静态单例对象变量
-
懒汉单例设计模式
public class SingleInstance { private static SingleInstance instance; private SingleInstance() {} public static SingleInstance getInstance() { if(instance == null) { instance = new SingleInstance(); } return instance; } }- 定义一个类,把构造器私有
- 定义一个静态变量存储一个单例对象,把单例对象私有化
- 提供一个getInstance()方法,在方法中生成单例对象并返回
重载
发生在同一个类中(或者父类和子类之间),方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以 不同。
重写
重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。
1. 方法名、参数列表必须相同,子类方法返回值类型应比父类方法返回值类型更小或相等,抛出的异常范围小于等于父类,访问修饰 符范围大于等于父类。“两同两小一大”
2. 如果父类方法访问修饰符为 private/final/static 则子类就不能重写该方法,但是被 static 修饰的方法能够被再次声明。
3. 构造方法无法被重写
枚举
public enum Season {
//第一行必须罗列枚举类的对象名称
SPRING, SUMMER, AUTUMN, WINTER;
}
封装
封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以 被外界访问的方法来操作属性。
继承
不同类型的对象,相互之间经常有一定数量的共同点。同时,每一个对象还定义了额外的特性使得他们与众不同。
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能 选择性地继承父类。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 , 提高我们的开发效率。
关于继承如下 3 点请记住:
1. 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3. 子类可以用自己的方式实现父类的方法。
多态
多态,顾名思义,表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。
多态的特点:
-
对象类型和引用类型之间具有继承(类)/实现(接口)的关系;
-
引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;
-
多态不能调用“只在子类存在但在父类不存在”的方法;
-
如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。
多态中成员访问的特点:
- 方法调用:编译看左边,运行看右边
- 变量调用:编译看左边,运行看左边。(多态侧重行为多态)
优势:
- 在多态形式下,右边的对象可以实现解耦合,便于扩展和维护
- 定义方法的时候,使用父类型作为参数,该方法就可以接收父类的一切子类对象
内部类
定义在一个类里面的类
分类:
-
静态内部类
-
有static修饰,属于外部类
-
静态内部类创建对象的格式:外部类名.内部类名 对象名 = new 外部类名.内部类构造器;
Outer.Inner in = new Outer.Inner();
-
-
成员内部类
-
无static修饰,属于外部类的对象
-
成员内部类创建格式:外部类名.内部类名 对象名 = new 外部类构造器.new 内部类构造器;
Outer.Inner in = new Outer().new Inner(); -
成员内部类中访问外部类的属性:外部类名.this.属性;
String name = Outer.this.name;
-
-
局部内部类
-
匿名内部类
本质是没有名字的局部内部类,定义在方法中、代码块中...,目的是为了简化代码编写
格式:
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快速入门
-
导入Logback相关jar包,添加到项目依赖库中
-
在src文件夹下创建Logback核心配置文件logback.xml
-
在代码中获取日志对象
public static final Logger LOGGER = LoggerFactory.getLogger("类对象");//当前调用日志的类.class -
使用日志对象输出日志信息
-
-
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属性中设置日志级别
浙公网安备 33010602011771号