封装、继承、多态。

来源:互联网 发布:js获取身份证号码 编辑:程序博客网 时间:2024/06/10 15:18

一,封装
也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏,仅对外提供公共访问方式。
1,封装的好处:
(1)将外界的变化隔离,使程序具备独立、安全和稳定性。
(2)便于设计者使用,提高代码的复用性
2,封装的原则
(1)将不需要对外提供的内容都隐藏起来
(2)把实现细节隐藏,提供可以对其进行访问公共的方式
3,封装的方式
将某一功能、属性抽离出来,独立写成单独的方法或类设置访问权限
4,设置访问权限
(1)设置访问权限可以限定该功能或属性可以被特定的访问者访问,保证了程序的安全性和功能的稳定性。
(2)java对类和类中成员都定义了特定的访问修饰符
类:public(公共的) 、default(默认的,不写就默认是它)
类中成员:public、protected、default(默认的)、private
注:类的访问修饰符可以不写(默认的),也可以写public(公共的),一个java文件中只能有一个被public修饰的类,且被public修饰的类类名必须要跟文件名一致(包括大小写一致),否则编译会出错,为了方便阅读,类名的命名规范是单词的首字母大写,多个单词组成的类名每个单词的首字母都大写
访问权限 类 包 子类 其他包

     public ∨ ∨ ∨ ∨ (对任何人都是可用的)

     protect ∨ ∨ ∨ ×    (继承的类可以访问以及和
     private一样的权限)

     default ∨ ∨ × ×    (包访问权限,即在整个包
     内均可被访问)

     private ∨ × × ×    (除类型创建者和类型的内部
     方法之外的任何人都不能访
     问的元素)
二,继承
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为并能扩展新的功能,或者说将事物的共性的功能和属性抽取出来定义成一个父类,让后来具有更多样化实现的子类继承父类。  
1,继承的作用:
(1)父类具备的方法子类可以直接继承过来,不用重新书写,提高了代码的复用性
(2)让类与类之间产生关系,有了关系才有多态的实现
(3)Java中只支持单继承,不支持多继承,因为多继承存在安全隐患(当多个父类存在同个功能时,子类不确定要运行哪一个),Java支持多层继承,即父类还可以继承其他类,java用另一种机制解决单继承的局限性,即多实现
2,对继承体系的使用
(1)想要使用体系,应该先查阅父类,因为父类定义了该体系的共性功能,了解了父类的功能,就基本可以使用该体系的功能了
(2)在具体调用时,要创建子类的对象,因为有可能当父类是抽象类时父类不能创建对象,而且子类具备更丰富、更具体的功能实现  
3,子父类中的构造函数
(1)构造函数不能重写
(2)在对子类对象进行初始化时,父类构造函数也会运行,因为子类中的构造函数默认第一行有一条隐式的super()语句,这样方便子类构造时先获取到父类的共性属性
(3)super()一定要定义在子类构造函数的第一行,当没有默认的空参数构造函数,要手动指定
3,注意事项:
(1)千万别为了获取其他类中的功能而继承,必须是类与类间有所属关系才可以继承。
(2)子类覆盖父类时必须保证子类权限大于等于父类,才可以覆盖,否则编译失败
(3)子类静态成员只能覆盖父类静态成员 
三,多态
某一类事物具备的多种表现形态(猫、狗和动物)
1,java中多态的表现形式
父类的引用指向自己的子类对象
父类的引用接收自己的子类对象
2,多态的前提
必须是类与类之间有关系,要么继承,要么实现
子父类间的成员存在覆盖
3,多态的好处与缺陷
好处是提高了程序的扩展性,缺陷是只能使用父类的引用访问父类的方法,无法访问子类的特有方法。
4,多态的应用
类型转换
向上转型,自然转型
向下转型,强制父类引用向下转型
5,特点
(1)多态中成员函数的特点
编译时看引用变量所属的类中是否有方法
运行时看对象所属类的方法
(2)多态中成员变量的特点
无论编译或运行时都参看右边
多态中静态成员函数的特点
编译或运行时都参看左边
6,多态的扩展示例
数据库操作(各种数据库):定义数据库的父类型,由哪类型的数据库调用就由该子类实现其具体操作内容。