(二)常问升级小点
1、面向对象
抽象:关键词abstract声明的类叫作抽象类;抽象类中至少有一个抽象方法;抽象方法只声明,无方法体;把一类事物的共同特征抽取出来,对象的属性和行为,组装成一个类;
封装:把数据属性封装到一个类中,把数据和方法绑定在一起,通过接口方法实现对属性的访问;隐藏数据属性,控制对数据的修改和访问;
继承:子类继承父类/基类的属性和方法;
多态:继承+重写(类对象对同一数据或消息做不同的操作处理;)
2、重写与重载
重载Overload:同一个类中,有 多个方法 名称相同 但是 入参参数类型或者个数不同 的方法;
重写Override:子类中定义了和父类 名称相同且参数完全相同 的方法;
3、基本原则
面向对象设计 五大原则 如下:
单一职责:只做自己该做的事儿,高内聚;
开放封闭:扩展开发、修改关闭;继承与抽象;
里氏替换:子类替换父类;
依赖倒置:面向接口编程;方法的返参类型、入参类型等尽量的使用抽象的类型而不是具体的类型;
接口隔离:小而专的多个接口,而不是大而全的复杂接口;
模式设计六大原则(上述后四+下二)
合成聚合复用:复用代码;
迪米特法则:一个对象对其他对象尽可能少的知道细节;即属性的尽量少的重合;
实际使用目的:高内聚、低耦合、抽象与继承、复用代码、接口隔离;
4、JAVA反射
反射机制:对应任意对象或类,在运行状态下 获取并调用其属性或者方法;加载对象并对对象进行解析,获取其类结构、属性和方法;(类加载时,class本身也是一个对象,被加载到内存,反射就是去寻找这个加载到的类,再次使用)
获取类: Class.forName("全限类名"); 类名.class; 对象.getClass(); 实例化:Clazz.newInstance();
反射应用:加载数据库驱动类 java Class.forName('com.mysql.jdbc.Driver'); IOC控制反转创建对象<bean id="beanID" class="**"></bean> Class.forName(classStr); cls.newInstance();
5、设计模式
单例模式:类加载或首次调用时创建实例对象,且全局仅有同一个实例对象;
工厂模式:工厂类根据传入参数确定创建某类型的子类实例对象并以父类形式返回;
代理模式:由代理类接收或创建目标类,实现额外的业务功能处理;
适配器模式:抽象类可以没抽象方法,在多方法接口与子类之间,抽象类实现接口的空方法体,子类不必实现全部方法,仅重写必用方法;抽象类解决两个接口之间不匹配问题;
构造者模式:构造类提供简单接口,自己内部实现各种实例对象的创建初始化等操作;
装饰模式:类似代理模式,实现统一接口动态增加额外功能,区别是代理模式注重隐藏自己的目标类;调用对象方法和增加逻辑代码实现额外核心功能;
6、自动拆装箱
基本数据类型与包装类,除int--Integer类和char--Character类 其它六个类首字母大写均一致;
Java是面向对象的编程,使用对象而不是基本数据类型,例如集合容器要求元素是Object类型;
自动装箱: 基本数据类型 自动转 包装类;自动拆箱:包装类 自动转 基本数据类型。
Integer integer=1; //装箱 Integer integer=Integer.valueOf(1); int i=integer; //拆箱 int i=integer.intValue();
自动拆装箱场景:基本类型 放入 集合;包装类与基本类型比较; 包装类四则运算;
注意Integer缓存机制,-127--128之间数据缓存,==依然true,但非本范围,是false;
logbak,配置日志文件路径、名称规则、大小限制等; 定时判断大小实时写入文件,文件会超出大小限制; 服务重启后序号没有持久化,会写之前的;
linux:查看进程:ps -ef|grep 查看当前路径:pwd 查看全文件:cat 分页查看:more/less 查看最新:tail -f 查看头:head 看网络:netstat 看ip:ifconfig 历史:history
df:系统或者文件所属磁盘大小使用等;du:显示文件目录的大小;
复制:cp/cp -r 移动改名:mv 建目录:mkdir 建文件:touch 删文件:rm -f 编辑:vim
杀进程:kill 远程拷贝:scp 远程调用连接:telnet 修改权限:chmod {u|a}{+|-|=}{r|w|x} filename 解压/压缩:tar -x/c