面向对象的三大特征
封装 继承 多态
封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改哪些调用我们代码的程序片段。适当的封装可以让程序更容易理解和维护,加强安全性。
封装的优点
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
封装的步骤
在Java中的体现及步骤
(1)把类中的字段私有化;
(2)给每一个字段都提供一组getter setter方法 (方法的规范写法);setXxx
在测试类中尝试创建对象,并通过调用getter setter方法完成 对字段的赋值和取值;
(3)提供一个无参数的构造方法
注意事项
1.不可以把字段的getset方法写成一个方法(取值的时候还得传入参数不可取)
2.不可以把一个类中的多个字段赋值方法携程一个方法(耦合度太高,如果我们只想给一个字段赋值就无法操作)
3. 单一职能原则:功能最小化,不要想着一个方法写完所有功能。
继承
继承的概念:
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
如:兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。
类的继承格式
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
类的继承格式
class 父类 {
}
class 子类 extends 父类 {
}
继承的意义
便于维护,减少代码重复。
继承的特性
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C
类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
多态
多态的概念
1.一个人就是一个动物:
(1) Animal aml = new Person();//一个动物变量中,可能存放子类对象的多种可能
2.理解:使用aml:编译是看的是Animal类型,运行时看的是实际存放的对象[真实类型]
3.官方概念:编译时跟运行时类型不一致就产生了多态
4.民间理解:父类类型的变量,存放子类类型的对象,可能存放子类类型的对象有多种可能
5.多态存在的前提:必须有继承关系
多态编译时和运行时过程
1.编译时,看的是父类类型,会现在父类中,看有不有对应的方法,如果没有继续向上找{更高父类}
如果找到了,编译通过,如果找不到,编译失败报错
2.运行时:看真实类型,如果在真实类型中找到了,就运行真实类型中的函数,如果没有找到,向上找。
多态的好处
1. 多态的好处:屏蔽了不同子类之间实现的差异
2. 加强面向对象编程思想:
a)此处体现java语言设计是想,希望将现实生活中的对象与对象之间的关系在计算机系统得以体现