java面向对象的三大特征是什么?
那就是封装、继承、多态。
但说到面向对象,还有一个很主要的特征就是抽象。
- 封装
每一个类中都会有属性和方法,封装指的就是把属性和方法隐藏起来,只保留一些对外的接口和外部进行交互。
封装的好处:
i.减少耦合;
ii.方便的修改自己的实现代码,不用修改那些调用我们代码的程序片段。
- 继承
继承就是子类继承父类的特征和行为,使得子类对象具有父类的非private属性和方法。
a)类的继承格式:
通过extends关键字申明一个类继承另一个类,如
class父类{}
class子类extends父类{}
b)为什么需要继承?
减少代码重复、臃肿,提高代码可维护性。
- 多态
多态就是同一个接口,使用不同的实现,而执行不同的操作。
如图:
a)多态的三个必要条件:
i.继承(extends)
ii.重写(子类重写父类的同名方法)
iii.父类引用指向子类的对象,如:
Animal a = new Cat() ;
父类引用animal指向子类cat
- 抽象
抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象,数据抽象指的是属性,行为抽象指的是方法。
(1)抽象方法:使用abstract修饰的方法是抽象方法。
(2)抽象类:包含抽象方法的类是抽象类,抽象类使用abstract修饰。
(补充:不准确,抽象类中可以不包含抽象方法,但是如果一个抽象类中不包含抽象方法,定义为抽象类没有意义,所以我们就认为包含抽象方法的类就是抽象类)。
i.抽象类不能创建对象;
ii.如果一个类继承了抽象类,子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract。
iii.抽象类就是用来作为父类,让子类继承的。如果我们定义了一个抽象类,却不去继承它,就等于白白创建了一个抽象类,没有任何意义。