为了账号安全,请及时绑定邮箱和手机立即绑定

构造方法中为什么加super();这个东西??

虚心求教老师;构造方法中为什么加super();这个东西??默认生成的构造方法都会有这个,为什莫是这个super()具体做什莫,感觉写了也和没写一样

正在回答

4 回答

要讲super就不能不提this,下面从4个角度讲解一下super(需要对比的时候拿this对比一下,加深理解)
1. super关键字表示超(父)类的意思。this变量代表对象本身。
2. super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。其中超类是最近的父类。
3.调用super() 父类构造函数的时候只能调用在子类构造函数的第一行
4.this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this

例如:
   class Person {  
       protected void print() {  
          System.out.println("The print() in class Person.");  
       }  
   }        
   public class DemoSuper extends Person {        
       public DemoSuper(){        
          super(); //调用父类的构造方法,而且放第一行,如果不写,系统自动加  
       }  
       public void print() {  
          System.out.println("The print() in class DemoSuper.");  
          super.print();// 调用父类的方法  
       }        
       public static void main(String[] args) {  
          DemoSuper ds = new DemoSuper();  
          ds.print();  
       }  
   }

2 回复 有任何疑惑可以回复我~
#1

慕哥5139462 提问者

感谢指教
2018-02-07 回复 有任何疑惑可以回复我~

我现在明白了,super关键字就是为了调用父类的方法以及属性

1 回复 有任何疑惑可以回复我~

那一节的视频你可能没有继续往下看。

  1. 在子类构造方法中,super();是默认省略的,(super();的作用是继承父类构造方法)。记住:默认省略不是不存在,而是存在,不过被省略了。

  2. 因为super();存在,所以如果父类是有参构造方法,那问题就出现了,因为子类的构造过程中必须调用父类的构造方法,如果有参,那么不能省略。就要自己调用父类有参构造方法。

1 回复 有任何疑惑可以回复我~
#1

记川

就比如 对数函数,log的底数为10,如果为10 ,我们可写可不写,如果不为10,那么我们就要加上底数。
2018-02-04 回复 有任何疑惑可以回复我~
#2

慕哥5139462 提问者

感谢指教
2018-02-07 回复 有任何疑惑可以回复我~

为了调用父类的方法

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

构造方法中为什么加super();这个东西??

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号