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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

构造方法的作用是在生成对象的时候,自动调用的方法,完成对象的初始化工作。
1.父类中如果没有写构造方法,myeclipse会自动生成一个默认的无参构造方法,而如果你写了带参数的构造方法,那么myeclipse不会自动生成默认无参构造方法的。
2.如果父类中的构造方法是带参数的(没有无参的构造方法),子类中的构造方法也必须与父类构造方法相对应。否则编译出错。(原因:父类长什么样子子类就的长什么样子)
3.如果父类中既有带参数的构造方法,也有无参的构造方法,子类中的构造方法可以有多个,也可以有一个,不过必须与父类的构造方法相对应,即样子一样(原因:父类有很多特点,子类可以全部继承,也可继承一部分)。
不知道我这样理解是否正确,高手指点!

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 不错不错继续加油

查看全部评分

3 个回复

倒序浏览
1.定义类时如果没写构造方法,类中都有一个隐式的无参构造方法,如果写了构造方法,就不会有隐式的无参构造方法,但这跟myeclipse没有关系;
2.如果父类中的构造方法是带参数的(没有无参的构造方法),子类的构造方法是可以无参的,例如
  1. class A{
  2. A(int i){
  3. System.out.println("A--"+i);
  4. }
  5. }
  6. class B extends A{
  7. private static int j ;
  8. B() {
  9. super(j);
  10. }
  11. }
复制代码
子类的构造方法都隐式的调用父类的构造方法,这时只要显式的给出就可以了;
3,同2

个人拙见,望共勉之!

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
已经总结的很好啦{:soso_e179:}
回复 使用道具 举报
个人觉得,父类的无参构造方法只要不被private修饰,任何时候都可以被子类构造方法复写,不管父类有没有其它的构造方法。构造方法是为了给与其对应的对象初始化。而子类的对象初始化时,必须先调用父类的构造方法进行第一次初始化(无参构造方法优先),然后调用自己的构造方法进行第二次初始化。下面的代码可以证明:

public class MS_Extends {

public static void main(String[] args) {
  A a = new B();
  a.Run();
}

}

class  A{

public static int a = 0;
public int b = 0;
  
public void Run(){
          System.out.println("■父类 - 普通函数");
         }
public A(){
  System.out.println("■父类 - 构造函数");
}
public A(int c){
          System.out.println("■父类 - 构造函数a");
         }
}

class  B extends A{

public static int a = 0;
public int b = 0;

public void Run(){
          System.out.println("◆子类  - 普通函数");
         }
public B(){
  System.out.println("◆子类 - 构造函数");
}
public B(int c){
          System.out.println("◆子类 - 构造函数b");
         }
}


输出结果:
■父类 - 构造函数
◆子类 - 构造函数
◆子类  - 普通函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马