一、封装
- 封装
(1)将细节隐藏,功能公开,让人更好地关注应用;
(2)把对象的属性(状态)和方法(行为)结合到一起,并尽可能隐藏内部细节,只保留有限的对外接口,对外只开放功能 - 实现
(1)通过访问修饰符实现封装,访问修饰符标明属性或方法是否可以被调用
(2)public:公开,都可以访问;private:私有,只可在类内访问,外部不可访问;protected:受保护的,可被子类和同一个包里的其他类访问;默认friendly:同一个包里的其他类可以访问 - 封装原则:
(1)使对象以外的部分不能随意存取对象的内部数据,从而有效的避免了外部错误对它的“交叉感染”
(2)字段和方法能私有的尽量私有,对私有属性通过公有的方法来访问 - 访问修饰符总结
二、继承
- 是子类自动共享父类数据结构和方法的机制,是类之间的一种关系
- 在继承关系下,原始的类叫父类(基类),派生出来的类叫子类或派生类
- Java只支持单继承,通过关键字extends完成继承
- 子类
(1) 完全拥有父类的全部方法和属性
(2) 可以定义自己的方法和属性
(3) 可以重写父类的方法,相当于将父类中此方法的实现做了一个屏蔽
(4) 当通过子类的实例调用这个方法的时候,一定是调用了重新书写的这个方法 - 支持链式继承,父类继承上一个父类,但是有一个Object顶层父类
- Java中所有的类都是直接或间接的继承Object
- super:调用父类方法
- 子类的构造函数的第一句代码一定是super,即使不写也在
- super代表的是父类的无参构造函数
- 当父类的无参构造方法有参数的时候,子类的就会报错,此时子类也需要有参的构造方法
- 子类的构造函数中的第一句代码一定是super代表父类中的构造函数
- 子类可以直接调用父类中的protected修饰的属性
- 构造函数的调用顺序
- 从超类到子类
- 无论用到super与否,都是先调用超类构造函数,在调用子类构造函数
- 如果没用到super,将调用超类系统默认的或没有参数的构造函数
- 继承中的类型转换
- 子类可以直接转换成父类
- 父类需要强制才能转换成子类
- 前提:实际中,父类就是一个子类的实例,如果不是则会报错
三、多态(多种形态)
- 概念:同一个类中的同一个方法,根据不同的请求情形下而产生多种状态的现象,叫做多态
- 两种方式
- 方法重载:一个类中出现多个同名方法
(1)参数类型不同
(2)参数个数不同
(3)不同类型参数顺序不同
(4)返回值不同不能实现重载 - 方法重写:子类重写父类的方法
(1)重写的方法的签名必须要和被重写的方法的签名完全匹配
(2)重写的方法的返回值必须和被重写的方法的返回一致或者是其子类
(3)重写的方法所抛出的异常必须和被重写方法的所抛出异常一致,或者是其子类
(4)私有方法不能被重写
(5)子类重写父类方法的过程中,可访问性只能一样或变的更公开