java面试题-关键字

14.现在有如下一段程序: 
             class super { 
                 String name ; 
                 public super(String name) {     
                     this.name = name ; 
                 } 
                 public void fun1()     { 
                     System.out.println("this is class super !"+name); 
                 } 
             } 
             class sub extends super { 
                 public void fun1()     { 
                     System.out.println("this is class sub !"+name); 
                 } 
             } 
             class Test { 
                 public static void main(String args[]) { 
                     super s = new sub(); 
                 } 
             } 
             运行上面的程序可能会出现的结果?

A. this is class super !

B. this is class sub !

C. 编译时出错

D. 运行时出错

 

 

 

 

java基础面试题-中级20题答案解析版​​​​​​​

正确答案是:C

super关键字表示对某个类的父类的引用。一般而言,super有两种通用形式:第一种用来访问被子类的成员隐藏的父类成员;第二种则是可以调用父类的构造函数。接下来说一下两种使用形式的方法和规则。

java中类命名规范要求不能使用关键字。

假如类名不是关键字,此代码会正常执行吗?

答案是:仍然编译报错。如图:

package com.songxinfeng;

class super1 { 
    String name ; 
    //写了有参构造,java则不会隐式生成无参构造
    public super1(String name) {     
        this.name = name ; 
    } 
    public void fun1()     { 
        System.out.println("this is class super !"+name); 
    } 
} 
//因为此类,没有写构造方法,java会隐式自动生成一个无参构造,无惨构造中会调用父类无参构造,而父类没有无参构造
class sub extends super1 { 
    public void fun1()     { 
        System.out.println("this is class sub !"+name); 
    } 
} 
class Test { 
    public static void main(String args[]) { 
        super1 s = new sub(); 
    } 
}  

 

加上一个有参构造,main中new时,报错,将new时,添加参数。即可。

 

package com.songxinfeng;

class super1 { 
    String name ; 
    //写了有参构造,java则不会隐式生成无参构造
    public super1(String name) {     
        this.name = name ; 
    } 
    public void fun1()     { 
        System.out.println("this is class super !"+name); 
    } 
} 
//因为此类,没有写构造方法,java会隐式自动生成一个无参构造,无惨构造中会调用父类无参构造,而父类没有无参构造
class sub extends super1 { 
    public sub(String name) {//添加有参构造
		super(name);
	}

	public void fun1()     { 
        System.out.println("this is class sub !"+name); 
    } 
} 
class Test { 
	//因为写了有参构造,java则不会隐式生成无参构造,new时候调用失败
    public static void main(String args[]) { 
        super1 s = new sub(); 
        super1 s1 = new sub(""); //添加参数则不报错
    } 
}  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

songfelicity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值