面向对象编程(OOP):让编程更有层次感,增加了公用模块的复用性,让程序员精力更加的集中到具体业务实现和技术突破上去。同时也让程序员在实现时提前考虑框架性,比如类的设计,可以对形象思维有了更高的要求。
面向程序设计方法的 5 大基本特征:
1.所有东西都是对象;
2.程序是一大堆对象的组合,通过消息传递,各对象知道自己该做什么;
3.每个对象都有自己的存储空间,可容纳其他对象;
4.每个对象都有一种类型;
5.同一类所有对象都可以接收相同的消息。
作用域 | 当前类 | 同一Package | 子孙类 | 其他package |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
friendly | √ | √ | × | × |
private | √ | × | × | × |
类(Class):一些公用的通用属性都可以放到类里面来进行实现,避免多个地方重复实现,每个类相当于一个类型,比如图形可以是一个所有形状的公用类。
接口(Interface):通过类的接口来具体操作/调用类的具体实现/动作,比如图形类可以有创建、删除的公用接口和实现。
继承(extrends):
子类拥有父类非 private 的属性,方法;
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
子类可以用自己的方式实现父类的方法;
Java 的类继承是单继承,但是接口可以使用关键字 implements 实现多重继承;
子类会默认调用父类的无参数构造器,但是如果没有默认(无参数)的父类构造器,子类必须要显示的指定父类的构造器(有参数),而且必须是在子类构造器中做的第一件事;
继承提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系),慎用继承。
继承后类型支持向上转型,比如B继承A,那么B的实例也属于A类型。
动态绑定/多态:当继承和向上转型同时存在时,函数实现会遵循多态原则进行实际的调用,调用顺序为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。
最终类:使用关键字 final 定义,表示该类不可被继承,final 类里面的方法和变量都默认是 final 属性。
抽象类:使用关键字 abstract 定义,抽象类只能被继承后使用,不能被直接实例化。
接口:使用关键字 interface 定义,接口不能被实例化,接口没有构造方法,接口中的方法默认都是隐性抽象方法,接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
Java 集合类:Set、List、Map、Queue。
单根结构:Java 中所有类最终都是从 "Object" 基础类继承而来。
下溯造型:相当于强制类型转换,使用前一定要确认安全性。
泛型:只使用一个大写字母来定义,并且放到<>中,泛型主要是定义时不指定明确的类型,而是在实例化时再指定,加强了代码复用性。
垃圾收集器:Java 支持内存的自动分配和回收机制,功能对性能会有一定影响。
异常处理:Try、catch 和 finally 机制。
多线程:Java 支持多线程处理,并且可以在多处理器时自行分配处理,对于共享资源的使用时,需要使用资源锁或者 synchronized 关键字。