一、继承
1.继承:关键字(extends)
▶它实现了is-a关系,例猫(Cat)、狗(Dog)和动物(Animal)就是一种is-a的关系,因此猫(Cat)、狗(Dog)可以继承(extends)动物(Animal),从而获得动物的非私有(private)属性和方法;
▶继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象;
▶java只支持单继承;
▶Cat可以当做Animal来引用,也就是说可以使用Animal应用Cat对象。父类类型指向子类对象,称:向上转型;
✔优点:
☺提高代码的复用性(多个相同的成员可以放在同一个类中);
☺提高代码的维护性(如果方法的代码需要修改,只修改一处即可)。
✘缺点:
☹类与类之间建立关系,增强了类的耦合性;
☹当父类发生改变时,子类实现也要跟着改变,削弱了子类的独立性。
★创建间Cat对象查看继承或者重写的方法:
★这里可看出,子类Cat继承了父类Animal的所有属性,其中Cat中的eat()方法与父类中eat()方法重名;此时Cat调用的eat()是重写了父类的方法,将父类的eat方法给覆盖了,这样可以让父类的方法得到扩充。
2.super
super我们一般指的是父类的对象,和this的功能相似;但是父类super()一般放在代码调用方法的第一行,不然会报错;
两者不能同时出现,因为都要求调用构造函数放置在第一行。
super “.” 和this "." 属性或者方法时没有要求
运行结果输出,
3.方法的重写(Override)
①继承之后,子类用友父类功能(不能访问私有资源);
②在子类中,可以添加子类方法,也可以修改父类的原有功能;
③重写父类方法的要求:
两同:方法名相同,参数列表一致。
两小:子类返回值类型小于等于父类的返回值类型(继承关系,不是值大小)。
子类抛出的异常小于等于父类方法抛出的异常。
一大:子类方法的修饰符权限要大于或者等于父类被重写方法的修饰符权限。
④与重载的区别:
→重载:在一个类中的现象:同一个类中存在方法名相同,参数列表不同的方法;
→重载意义:为了外界方便调用,不管出入什么样的参数,都可以匹配到对应的同名方法。
String、println熟知的打印输出用的就是重载!!!!