面向对象的程序设计语言有三大特征,分别是封装、继承和多态。
封装:
在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。
适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
封装的优点:
1、良好的封装能够减少耦合。
2、类内部的结构可以自由修改。
3、可以对成员变量进行更精确的控制。
4、隐藏信息,实现细节。
封装时一般将类中的属性设置为私有,对信息进行隐藏,并对外提供访问它们的接口。
案例:
继承(extends):
继承就是子类继承父类的特征和行为(属性和方法),使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的特性:
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
Java 的继承是单继承,单继承就是一个子类只能继承一个直接父类。
提高了类之间的耦合性(继承的缺点,耦合度高会造成代码之间的联系更紧密,代码独立性查)。
继承的关键字:
在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个父类。
案例:
多态:
java引用变量有两个类型,一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就会出现所谓的多态。
1、意义:
行为的多态:同一个类型的引用指向不同的对象时,有不同的表现;
对象的多态:同一个对象被造型为不同的类型时,有不同的功能。
2、向上造型(发生自动类型转换):
父类的引用指向子类的对象;
能造型的类型有:父类和所实现的接口;
3、强制类型转换:
成功的条件:
A、引用所指向的对象,就是该类型;
B、引用所指向的对接,实现了该接口
4、强制转型时若不符合如上两个条件,则会发生ClassCastException(类型转换异常),建议在强制类型转换前,先通过instanceOf判断引用指向的对象是否是该类型。
案例: