面向对象
面向过程:
关注事情的每一个步骤顺序
面向对象:
关注事情的参与者,参与者做什么
直接高效
易于复用,扩展,维护
封装
比如javaBean:属性私有,提供getset方法对外访问,这个属性的赋值获取逻辑只由javaBean来决定,不能被外部修改
再比如操作数据库,我们不需要关心连接是如何建立的,sql如何执行的,只需要引入mybatis调方法就行
继承
共性方法可以向上抽取,不需要重复写,只写个性化的方法,子类可以用夫类的功能,单不能选择性继承父类
1.子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类的私有属性和方法 子类是无法访问 ,只是拥有
2.子类可以拥有自己的属性和方法,子类可以对父类扩展
3.子类可以用自己的方式实现父类的方法
多态
程序定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是程序运行时才确定
也就是说
一个引用变量到底指向哪个类的实例对象,该引用变量发出的方法调用到底是那个类中的实现的放方法,必须在程序运行期间才确定
java中两种形式可以实现多态:继承 接口
父类引用指向子类对象
用于参数传递与返回值
但是
无法调用子类特有功能
二 String StringBuffer StringBuilder
可变性
String被 final修饰的字符数组保存字符串不可变
java9后,改用byte数组存储字符串
StringBuffer和StringBuilder都继承自AbstractStringBuilder类
这个类中使用字符数组保存字符串,但是没有使用final修饰 可变
StringBuffer和StringBuilder构造方法都是调用父类构造方法
线程安全性
String对象不可变,线程安全
StringBuffer 对⽅法加了同步锁或者对调⽤的⽅法加了同 步锁,所以是线程安全的
StringBuilder 并没有对⽅法进⾏加同步锁,所以是⾮线程安全的。
性能