封装:java面向对象的基础,将对象的属性和行为都封装到类中,是现实生活的抽象表达,比较关键的点是分配属性和行为。
比如说“人开车”,车与人都是对象,但是车行驶的行为是给车本身而不是人。
优点:模块化、减少耦合、隐藏信息(访问修饰符)
继承:避免代码复写和实现功能扩展的基础,需要注意的是:不能继承父类的私有属性和构造
优点:能很好的体现相关类之间的层次结构关系
抽象:从多个实体抽离出来的共同特性组成。 需要注意的是:它并不是一个真实对象,原因是它的属性不能完全描述一个对象
优点:体现一种继承关系,自底向上抽象,接口是行为的抽象,是模板方法的基础
多态:同一消息因为不同的对象而使用不同的行为方法
编译时多态: 重载 运行时多态: 里氏替换
实现必要条件:继承+重写+转型
优点:可扩展、可维护性
final 和static的区别:
对于原始数据类型,final保证该变量的值不可变,对于引用数据类型,final保证该对象指向的内存地址不可变。
static保证在内存中只能有一份该变量
final finally finalize区别
final 可以修饰类(不可继承),方法(不可重写),变量(地址不可变)
finally 是java保证重点代码一定要被执行的机制(关闭连接、unlock),但出现如下
try{System.exit(0); }或者当前线程被杀死是不执行的,因此不要在finally代码块内使用return语句
finalize 设计该方法的目的是保证对象在被垃圾收集前完成对特定资源的回收,类似于c++的析构函数,但是会影响到垃圾收集,因此不建议使用,而且jdk9已经明确指出弃用
java对象的new的过程: