面向对象:面向对象就是将事物对象化,包括其属性和行为,更加贴近实际生活思想。
封装
将客观的事物封装成抽象类,其数据和方法只让可信类和对象操作,对不可信的隐藏。(其思路是隐藏代码的实现细节,又能提供访问方式)
目的:简化代码、偷懒、隐藏核心代码。
优点:便于使用、提高重用性、提高安全性、变化隔离。
缺点:因变量用private修饰或封装进方法内,所以不能被直接访问,增加了访问难度。
(例如实体类的应用。)
继承
一个类只能单继承(接口可以多继承),它有父类非private的所有功能,同时有自己的属性和方法,可以在父类方法的原基础上进行扩展。
类与类之前可以多重集成(例如:A extends B B extends C) 需要访问父类成员时用super
作用:有利于代码的维护、减少代码的重复
(例如:创建时间和更新时间等信息为常用属性时可单独定义实体类,其他类只需继承即可)
多态
多态的必要条件:
- 继承
- 重写(子类重写父类同名的方法)
- 向上转型(父类引用指向子类的对象)
当子类对象调用重新方法时,用的是子类的方法。要调用父类被重写的方法时要使用super。
作用:消除了类之间的耦合,使代码更简洁,利于扩展。
向上转型(安全):
Children extends Father(当子类Children继承父类father)
Father f = new Children() 此为向上转型;
Children c= (Children) f; 此为向下转型。因为此时f还指向一个Children对象,所以向下转型成功,替换原则。
若 Father f = new Father(),此时Children c= (Children) f向下转型失败,因为子类Children不能指向Father
向下转型,将风险转移到了运行时,不安全,切已不属于多态。
多态实际运用:
(例如:父类是车(有车的基本属性轮子等信息),子类是卡车或轿车(有除基本信息的更详细的信息),当出现一堆车辆信息此时向上转型更方便一些)
重载:同名的方法,但参数必须不同,返回值等信息可相同也可不同,异常可增加,发生在同一类和子类中。
重写:同名的方法,参数和返回值等信息必须相同,异常抛出不能增加,但可减少。
注:构造方法不能重写,同一包下不能重写private和final的方法,不同包下只能重写pubulic和protected的非final的方法(final不能重写),static也不能重写但可以再次声明。