黑马程序员技术交流社区

标题: super关键字我这样理解对不对? [打印本页]

作者: luqh    时间: 2015-3-21 16:50
标题: super关键字我这样理解对不对?
  1. public class Poin {
  2.         private int x;
  3.         public int y;

  4.         public Poin(int x, int y) {
  5.                 super();
  6.                 this.x = x;
  7.                 this.y = y;
  8.         }
  9. }
复制代码
1.在上面的Point类中因为Point没有父类,所以public Poin(int x, int y) 中的super(),实际不起作用,而当Point有父类的时候,这个super才会调用父类的构造方法,是这样理解么?
2.不管Point有没有父类,这个super()都要写么?

作者: fantacyleo    时间: 2015-3-21 17:13
Point有父类——Object 所以super()是起作用的。但super()可以不写,编译器会自动加上super()
作者: 妖妖    时间: 2015-3-21 19:39
所有的类都会有一个共同的父类,就是object类,super()即使不写上,程序也会在运行的时候自动加上,就像是每一个类都会有一个默认的构造函数一样。
作者: 夜班心桥    时间: 2015-3-21 23:11
所有的类,都是Object的子类。所以,在每个类的构造函数中的第一行都会有一个默认的super()。
在这里,Poin没有父类(Object除外),其实Poin的构造方法里,可以不用写super语句,编译时候,会自动加上一个super()。
作者: 夜班心桥    时间: 2015-3-21 23:13
补充,如果在一个类中的构造方法中的第一行,如果手动写了this语句,此时该构造方法中的默认的super语句就没有了。因为在这里,super和this语句只能有一个,而且必须放在第一行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2