Java学习记录(五)super关键字的用法

来源:互联网 发布:新版淘宝收藏店铺在哪 编辑:程序博客网 时间:2024/05/16 14:59

在上次的课程中学习到Java的继承,在Java中当子类想使用父类的成员时就需要用到super这个关键字,而super在Java中有两种用途。

一、

第一种用途是在子类的构造方法中,super关键字可以调用父类的构造方法将参数传递给它。

其使用语法是:super(参数)

而需要注意的是:super关键字的使用必须在子类构造方法的第一条语句。来分析一个例子:

父类:

public class Person {public String name;public char sex;private int age;public Person(String name){this.name = name;}public int setAge(int age){return this.age = age;}public int getAge(){return this.age;}public void sleep(){System.out.println("人需要休息");}}
子类:

public class Student extends Person {public Student(){//super("Tom");}public void sleep(){System.out.println("学生需要休息");}public void test(){setAge(10);System.out.println(getAge());super.sleep();}}
启动函数:

public class Start {public static void main(String[] agrs){Student s = new Student();System.out.println(s.name);s.test();}}

在父类中,定义了一个有形参的构造方法,在子类中定义了一个无参的构造方法,在编译时会报错。因为在创建对象,子类实例化时,子类会默认调用父类的无参构造,这时就有两个解决方案。一是在父类中敲进去无参的构造方法,二是需要将子类中注释的语句敲进去,由此来实现子类的实例化。


二、

而第二种用途:是当父类和子类有同名成员时,子类会默认访问本类的成员。为了使子类访问父类中的同名成员就需要用到关键字super。

使用语法:super.成员名

接着继续拿上面这个例子来分析:

父类中有一成员方法sleep(),子类也有一个同名的方法sleep(),当需要使用父类的sleep()方法时就通过语句:super.sleep();来调用。

0 0