一、重写父类方法1、什么是重写父类方法在继承关系中,子类会继承父类定义的方法,当在子类中对继承的方法做了一些修改,就是覆盖父类的方法。也就是说,子类包含了与父类同名的方法。2.重写父类方法,遵循“二相同二小一为一”的原则,两者相同:方法名和参数列表相同。二小:子类方法的返回值类型小于等于父类方法的返回值类型;子类方法声明抛出的异常类小于等于父类方法声明抛出的异常类。一大:子类方法的访问权限大于等于父类方法的访问权限。3.重写父类方法实例://Animal类的定义classAnimal{publicStringname;//Name属性publicintage;//Age属性//动物叫法voidshout(){System.out.print("Animal'scallsound");}}//定义Cat继承Animal类classCattextendsAnimal{voidshout(){System.out.print("喵喵喵~~~~");}//显示名字和年龄的方法publicvoidshow(){系统。out.print("我是"+name+","+"今年"+age+"岁数");}}publicclassp20{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubCatc=newCat();//创建Cat类实例对象c.name="BritishShorthair";//给Cat类的name属性赋值c.age=2;//给Cat类的age属性赋值c.show();//调用Catclassshow()methodc.shout();//调用Cat类的shout()方法}}输出结果为:我是英国短毛猫,今年2岁了。喵~~~~从上面的代码来看,Cat类继承了Animal类的shout()方法。当Cat类继承Animal类,没有shout()方法时,调用Animal的shout()方法,打印“动物发出的声音”。目前无法描述具体情况。动物叫声,Cat类对象代表一只猫,它发出的声音是“喵喵喵~~~”。方法的重写就是在Cat子类中定义一个shout()方法来重写父类的方法。在调用Cat类对象的shout()方法时,只会调用子类重写的方法,不会调用父类的shout()方法。二、super关键字1、什么是super关键字super是当前类的直接父类对象,是对当前对象的直接父类对象的引用。2.如果子类重写父类的方法后,子类对象无法访问父类重写的方法,可以使用super关键字访问父类的成员3.super关键字调用的成员变量父类和Member方法格式super.Member变量Super.Membermethod([参数1,参数2,参数3,....])4.super关键字用法示例://定义Animal类classAnimal{Stringname="animal";//name属性intage=6;//age属性voidshout(){System.out.println("animal'sbarking");}}classDogeextendsAnimal{Stringname="dog";//name属性//重写shoutmethodoftheparentclassvoidshout(){super.shout();}//访问父类的成员变量voidshow(){System.out.println("Name:"+super.name+","+"Age:"+super.age+"yearsold!");}}publicclassp22{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDogd=newDog();//创建狗对象d.shout();//调用D的重量og对象写的shout方法d.show();//调用Dog对象的show方法}}输出结果为:动物的声音名称:动物,年龄:6岁!从上面的代码来看,首先定义一个Animal类,在Dog类中继承Animal类,然后重写父类的shout()方法,在子类中使用super.shout()调用重写后的父类方法类,并在show()方法中访问父类的属性,super关键字可以访问属性和方法。三、super关键字调用父类的构造方法1.super关键字调用父类的构造方法格式super([参数1,参数2,参数3,...])2.super关键字调用父类的构造方法方法实例://定义Fruit类classFruit{//定义Fruit类的构造函数,参数为publicFruit(Stringname,doubleweight){System.out.print("我是一个"+name+","+"weightis:"+weight+"g!");}}//定义Cherry继承自Fruit类classCherryextendsFruit{publicCherry(){super("cherry",66);//调用构造方法父类带参数}}publicclassp23{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubCherryc=newCherry();//实例化子类Cherry对象}}输出结果为:我是樱桃,权重为:66.0克!从上面的代码来看,首先是定义了一个Fruit类,在这个类中定义了一个带参数的构造函数。定义Cherry继承Fruit类,带参调用父类的构造方法。在实例化Cherry对象时,会调用Cherry类的构造方法,而在调用Cherry类的构造方法时,也会调用父类的构造方法。super调用父类构造函数的代码应该在子类构造函数的第一行,只能出现一次。四。小结本文主要介绍重写父类的方法和super关键字。重写父类的方法是指子类包含与父类同名的方法,遵循“两个相同,两小一大”的原则。super关键字是当前类的直接父类对象,是对当前对象的直接父类对象的引用。通过super关键字大小写来理解这个用法。此外,本文还介绍了super关键字调用父类构造方法的方法,介绍了其格式和super关键字调用父类构造方法的情况。希望大家能从本文的学习中受益。有帮助!本文转载自微信公众号《Java进阶学习交流》,可通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。
