面向对象的 三大特征 封装继承多态
封装:
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。就是封装性的设计思想。
javaBean, 通过对属性私有化,设置外部读取和修改的方法,内部细节对外隐藏,不需要了解内部是怎么操作实现的,只需要知道这个方法是干什么的就行了比如 有些 setNam方法 需要加入特殊字符,有些字段我要保存时是忽略大小写的,就需要通过set方法来操作;有些字段是不允许修改的,那么就只提供get方法,不在提供set方法,
体现出了 高内聚低耦合的编程思想
权限修饰符
java四种权限修饰符 |
||||
本类 |
本包 |
不同包子类 |
所有类 |
|
Private |
√ |
X |
X |
X |
缺省 |
√ |
√ |
X |
X |
Protected |
√ |
√ |
√ |
X |
Public |
√ |
√ |
√ |
√ |
封装:属性私有化,提供 公共的方法 进行设置和获取。
继承:
Java中有父类、子类的概念,类似生活中的父子关系,父类中的一些属性和方法可以被子类继承下来使用,不再需要重复定义。
- 其中,多个类可以称为
子类,也叫派生类;多个类抽取出来的这个类称为父类、超类(superclass)或者基类。
继承描述的是事物之间的所属关系,这种关系是:is-a 的关系。例如,图中猫属于动物,狗也属于动物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。
- 继承的好处
-
- 提高代码的复用性。
- 提高代码的扩展性。
- 类与类之间产生了关系,是学习多态的前提。
继承的格式
先有父类 再有再类,在声明子类 时候 确定 关系
通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:
【修饰符】 class 父类 { ... } 【修饰符】 class 子类 extends 父类 { ... }
方法重写(Override)
当子类继承了父类的某个方法之后,发现这个方法并不能满足子类的实际需求,那么可以通过方法重写,覆盖父类的方法。
1. 方法重写:
子类中定义与父类中相同的方法,一般方法体不同,用于改造并覆盖父类的方法。
方法重写的具体要求:
1.必须保证父子类之间重写方法的名称相同。
2必须保证父子类之间重写方法的参数列表也完全相同。
3.子类方法的返回值类型必须【小于等于】父类方法的返回值类型(小于其实就是是它的子类,例如:Cat< Animal)。注意:如果返回值类型是基本数据类型和void,那么必须是相同。
4.子类方法的权限必须【大于等于】父类方法的权限修饰符。
5.子类方法声明的异常不能比父类大。
注意:public > protected > 缺省 > private父类私有方法不能重写跨包的父类缺省的方法也不能重写
不属于重写的情况::
1.静态方法不能被重写,方法重写指的是实例方法重写,静态方法属于类的方法不能被重写,而是隐藏。
2.final修饰的方法不能被重写
3.父类私有的方法不能被重写。
多态
多态的前提条件:
1.继承
2.重写方法
3.父类引用指向子类对象
编译看左边,运行看右边。
开闭原则: 对修改关闭,对扩展开放。
应用:
1.参数传递
2.数组类型, 数组是父类类型,元素可以 是 子类任意类型