A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luqh 中级黑马   /  2015-3-21 16:50  /  1127 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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()都要写么?

4 个回复

倒序浏览
Point有父类——Object 所以super()是起作用的。但super()可以不写,编译器会自动加上super()
回复 使用道具 举报 1 0
所有的类都会有一个共同的父类,就是object类,super()即使不写上,程序也会在运行的时候自动加上,就像是每一个类都会有一个默认的构造函数一样。
回复 使用道具 举报
所有的类,都是Object的子类。所以,在每个类的构造函数中的第一行都会有一个默认的super()。
在这里,Poin没有父类(Object除外),其实Poin的构造方法里,可以不用写super语句,编译时候,会自动加上一个super()。
回复 使用道具 举报
补充,如果在一个类中的构造方法中的第一行,如果手动写了this语句,此时该构造方法中的默认的super语句就没有了。因为在这里,super和this语句只能有一个,而且必须放在第一行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马