首页 > 试题广场 >

关键字super的作用是?

[单选题]

关键字super的作用是?

  • 用来访问父类被隐藏的非私有成员变量
  • 用来调用父类中被重写的方法
  • 用来调用父类的构造函数
  • 以上都是
推荐
答案:D
super代表父类对应的对象,所以用super访问在子类中无法直接使用的父类成员和方法
编辑于 2015-02-02 15:04:18 回复(7)
正确答案D:
      1:特殊变量super,提供了对父类的访问。
      2:可以使用super访问父类被子类隐藏的变量或覆盖的方法。
      3:每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
      4:构造是不能被继承的。
编辑于 2015-04-20 21:58:54 回复(2)
不懂为何选D,在子类方法中明明不能访问父类私有字段。
class Father3 {
	private Integer i = 1;
}

class Son3 extends Father3 {
	public void f() {
		// System.out.println(super.i); // The field Father3.i is not visible
	}
}

编辑于 2015-12-14 15:15:41 回复(15)
B.有点说的不好 应该说成重写而不是重载
发表于 2016-09-16 12:37:01 回复(6)
D
super关键字
目的:
就是显示的告诉子类,当前的属性或方法来源于父类。
作用:
表示当前类父类对象的引用。
用法:
可以调用父类的属性或方法
super.属性名称或者super.方法名称(参数列表);
super可以出现在子类构造方法的第一句代码,就表示子类中的构造方法
明确指明了要调用的父类的构造方法来创建父类的对象。
发表于 2015-09-21 00:16:08 回复(0)
隐藏是指子类覆盖了父类的成员变量,不是指private哦
发表于 2016-08-18 17:57:05 回复(0)

A选项中隐藏的意思是指,如果子类中重新定义了父类的成员变量,那么该成员变量对子类来说就是隐藏的,如果子类想访问该成员变量,就要使用super关键字。

发表于 2021-01-08 13:21:25 回复(0)
调用父类方法不是用super()吗,这里指的是super关键字吧
编辑于 2021-08-17 18:20:08 回复(0)
A选项父类的隐藏成员变量即使用 super 也是不能直接访问的,会报错:The field xxx is not visible;要访问的话通过反射或者父类的 get 方法才可以;

B选项说的是父类中存在多个被重载的方法,范围是在父类中,super 通过传入不同实参可以进行不同 调用;

C选项默认情况下,super关键字可以不写,编译器会自动在子类构造函数的第一句加上 super(); 来调用父类的无参构造器;如果想写上的话必须在子类构造函数的第一句。

所以我觉得答案是 B、C。
编辑于 2015-10-08 16:44:20 回复(2)
B选项错误,super可以用来调用父类中被重写的public或者protected方法和同包情况下的默认方法
发表于 2019-10-04 22:01:52 回复(0)
由于构造函数不能被继承,所以子类使用super()函数调用父类的构造函数。super不止能用来调用父类的构造函数,还能用来调用父类中那些被子类隐藏的变量和方法 。所谓隐藏是指在子类中重新定义了父类的变量或方法
编辑于 2019-08-07 09:13:38 回复(0)
1:特殊变量super,提供了对父类的访问。
      2:可以使用super访问父类被子类隐藏的变量或覆盖的方法。
      3:每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
      4:构造是不能被继承的。
发表于 2019-05-08 16:14:54 回复(0)
貓头像
super不止能用来调用父类的构造函数,还能用来调用父类中那些被子类隐藏的变量和方法
所谓隐藏是指在子类中重新定义了父类的变量或方法
发表于 2019-04-30 18:45:24 回复(0)
到底是super关键字,还是super()?
发表于 2018-04-21 16:25:55 回复(0)
正确答案D:       1:特殊变量super,提供了对父类的访问。       2:可以使用super访问父类被子类隐藏的变量或覆盖的方法。       3:每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。       4:构造是不能被继承的。
发表于 2017-08-03 09:48:12 回复(0)
a:父类被隐藏的成员变量是指被子类覆盖的变量父类变量,调用要用super b:调用父类的重载方法指调用父类中被子类覆盖的方法,且该方法在父类中有重载,使用super可以指定调用父类中不同参数的重载方法 c:调用父类的构造方法,就不多说了
编辑于 2017-07-26 13:25:31 回复(0)
public class SuperTest{ int a = 0; public void say(){
        System.out.println("重载1");
    } public void say(int num){
        System.out.println("重载2");
    }
} class Test extends SuperTest{  int a = 100;  public void test(){  //调用父类被重载的方法    super.say(); super.say(1); //调用父类被隐藏的成员变量,这里的隐藏是指:子类从父类继承过来的成员变量,然后重写导致的隐藏    System.out.println(super.a);
    } //调用父类的构造方法    public Test(){  super();
    }
}

编辑于 2016-07-28 09:56:11 回复(0)
敏感词iv>     如果子类中定义的成员变量和父类中成员变量同名时,子类就隐藏了从父类继承的成员变量。当子类中定义了一个方法,并且这个方法的名字、返回类型、参数个数、类型和父类的某个方法完全相同时,子类从父类继承的这个方法被隐藏。如果在子类中想使用被隐藏的成员变量或方法,就可以使用关键字super。          关键字super的作用 (1) 用来访问被父类隐藏的成员变量  (2) 用来调用父类中被重载的方法

(3)使用super调用父类的构造方法

编辑于 2015-08-12 17:50:35 回复(0)
答案应该是C. A父类私有方法子类是无法访问的,super也不行 B能访问的应该是被子类重写的方法,而不是重载
发表于 2015-07-26 00:50:34 回复(0)
发表于 2015-01-04 09:34:23 回复(0)
🐮
发表于 2023-04-13 14:57:05 回复(0)