继承、封装、多态
继承:本质是对一批类的抽象,从而实现对现实世界更好的建模
使用extends关键字
继承是is-a关系,例如哺乳动物是动物
组合是has-a关系,例如计算机和主板关系
方法的重写(override):
在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。(由于多态)
方法的重载指同一个类中,一个方法名对应了多个方法(形参列表不同)
方法的重写指的是子类重写了父类的方法
toString方法
Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息。
在进行String与其它类型数据的连接操作时,将自动调用该对象类的toString()方法。
equals方法
Object类中定义有public boolean equals(Object obj)方法
提供定义对象是否“相等”的逻辑
x.equals(y)当x和y是同一个对象时返回true,否则返回false
final关键字
被 final 修饰的变量不可改变。即初始化一次后,就不能再次被赋值
被 final 修饰的方法不可以被子类重写
被 final 修饰的类不能被继承
封装
使用访问控制符
属性一般使用private(除非本属性确定会让子类继承并且使用)
提供相应的get/set方法来访问相关属性,这些方法通常是public,从而提供对属性的读取操作。
一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public
多态(polymorphism)
多态:如果编译时类型和运行时类型不一致,就会造成多态。
- 多态是方法的多态,属性没有多态性。
- 编写程序时,如果想调用运行时类型的方法,只能进行类型转换。不然通不过编译 器的检查。但是如果两个没有关联的类进行强制转换,会报:ClassCastException。 比如: 本来是狗,我把它转成猫。就会报这个异常。
- 多态的存在要有 3 个必要条件:要有继承,要有方法重写,父类引用指向子类对象