如何使用Java中的Super关键字
本篇内容主要讲解"如何使用Java中的Super关键字",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Java中的Super关键字"吧!
一、重写父类方法
1.什么是重写父类方法
在继承关系中,子类会继承父类所定义的方法,当在子类中对继承方法进行一些修改,这就是重写父类方法。也就是说子类包含父类同名方法。
2.重写父类方法遵循"两同两小一大"原则
两同:方法名,参数列表相同。
两小:子类方法返回值类型小于等于父类方法返回值类型;子类方法声明抛出的异常类小于等于父类方法声明抛出的异常类。
一大:子类方法的访问权限大于等于父类方法的访问权限。
3.重写父类方法案例
例如:
//定义Animal类 class Animal{ public String name;//名字属性 public int age;//年龄属性 //动物叫的方法 void shout(){ System.out.print("动物发出的叫声"); } } //定义Cat继承Animal类 class Cat extends Animal{ void shout(){ System.out.print("喵喵喵~~~~"); } //显示名字和年龄方法 public void show(){ System.out.print("我是"+name+","+"今年"+age+"岁"); } } public class p20 { public static void main(String[] args) { // TODO Auto-generated method stub Cat c=new Cat();//创建Cat类实例对象 c.name="英国短毛猫";//给Cat类的name属性赋值 c.age=2;//给Cat类的age属性赋值 c.show();//调用Cat类的show()方法 c.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关键字调用父类的成员变量和成员方法格式
super.成员变量 Super.成员方法([参数1,参数2,参数3,....])
4.super关键字的用法案例
例如:
//定义Animal类 class Animal{ String name="动物";//name属性 int age=6;//age属性 void shout(){ System.out.println("动物发出的叫声"); } } class Dog extends Animal{ String name="狗";//name属性 //重写父类的shout方法 void shout(){ super.shout(); } //访问父类成员变量 void show(){ System.out.println("名字:"+super.name+","+"年龄:"+super.age+"岁!"); } } public class p22 { public static void main(String[] args) { // TODO Auto-generated method stub Dog d=new Dog();//创建狗的对象 d.shout();//调用Dog对象的重写的shout方法 d.show();//调用Dog对象的show方法 } }
输出的结果是:
动物发出的叫声 名字:动物,年龄:6岁!
从上面代码中,首先定义一个Animal类,在Dog类继承Animal类,然后重写了父类的shout()方法,在子类中使用super.shout()调用父类重写的方法,在show()方法访问父类的属性,super关键字是可以访问属性和方法。
三、super关键字调用父类的构造方法
1.super关键字调用父类的构造方法格式
super([参数1,参数2,参数3,...])
2.super关键字调用父类的构造方法案例
例如:
//定义Fruit类 class Fruit{ //定义Fruit类有参数的构造方法 public Fruit(String name,double weight){ System.out.print("我是一个"+name+","+"重量为:"+weight+"g!"); } } //定义Cherry继承Fruit类 class Cherry extends Fruit{ public Cherry(){ super("樱桃",66);//调用父类有参数的构造方法 } } public class p23 { public static void main(String[] args) { // TODO Auto-generated method stub Cherry c=new Cherry();//实例化子类Cherry对象 } }
输出的结果是:
我是一个樱桃,重量为:66.0g!
从上面的代码中,首先是定义了一个Fruit类,在Fruit类中定义了有参数的构造方法。定义Cherry继承Fruit类,调用父类有参数的构造方法。在实例化Cherry对象就会调用Cherry类的构造方法,Cherry类的构造方法被调用时父类的构造方法也一样被调用了。super调用父类构造方法的代码要写子类构造方法的第一行,只可以出现一次。
到此,相信大家对"如何使用Java中的Super关键字"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!