面向对象的三大基本特征:封装 继承 多态
封装 (Encapsulation])
private 私有的 只有本类中可以使用的
public 公共的 任何位置都可以使用的
封装对于类的开发者和使用者都有好处
开发者: 能够让数据得到保护 从而更加安全
使用者: 能够让使用者将精力集中在核心业务上
属性
官方要求 每一个属性都应当使用private修饰
并且配合提供 两个public的方法
一个用于设置属性的值 setter()
一个用于得到属性的值 getter()
方法
官方要求 学会分辨方法是核心方法 还是 给核心方法提供服务的方法
核心方法(需要外界调用的方法)使用public修饰
给核心方法服务的方法(不需要外界使用的方法) 用private修饰
继承(Inheritance)
关键字:extends
●父类有相当于子类也有
●继承是代码共享最最简单的方式之一
●Java当中的类只支持单向继承,一个类最多只能有一个父类
●私有属性在子类的存储空间当中确实存在(这是由于创建对象的流程所决定的),但是不能直接使用,所以不能算作继承得到的
多态(Polymorphism)
●一个事物总有多种存在的形态
●一个对象总有多种称呼它的类型
●多态的出现 是要伴随着一种语法--父类类型 = 子类对象
●编译的时候 编译器会根据对象左侧的类型来进行语法检查,但是运行的时候 事物是客观存在的 不会因为你改变称呼它的类型 而发生任何变化,所以当我们调用方法的时候什么类型的对象定然执行什么类的方法
●事物是客观存在的 不会因为你改变称呼它的类型 而发生任何变化
●多态能够降低类和类之间的耦合关系,让先出现的类型 在不做任何修改的情况下,就能跟之后出现的新类型 结合起来使用
方法重载(方法过载)
●发生在同一个类当中,方法名字相同,但是参数列表不同(参数个数不同、参数类型不同、参数顺序不同)的两个方法(名字不同不能算作不同)
●方法重载 能够让同一个方法有多种不同的存在形态,从而让方法适用范围更加广泛
方法覆盖(方法重写)
●发生在有继承关系的父类和子类之间子类当中
●子类在继承得到父类的方法之后对其实现并不满意,于是进行了重新实现
方法覆盖要求
●访问控制权限修饰符不能越变越小
●方法签名(返回类型 + 方法名 + 参数列表)必须完全相同
●抛出的异常声明(异常范围)不能越变越大
●如果在方法覆盖的时候 需要沿用父类的方法实现并且只是给出补充和扩展 那么可以学会使用super.fun();(fun()为父类的方法)
●使用注解@Override来保证方法覆盖必然成立
●从JDK5.0开始,方法覆盖的时候支持协变返回类型,在子类中重写父类的方法时,返回类型可以是子类的对象,也可以是当前类的父类的子类对象