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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 g552092947 于 2015-7-1 18:39 编辑
  1. package com.itheima;

  2. public class People {

  3.         /**
  4.          * @param args
  5.          * 第能以一个People类包含属性姓名,年龄
  6.          */
  7.         private String name;
  8.         private int age;
  9.         //定义一个无参的构造函数
  10.         public People() {
  11.                 // TODO Auto-generated constructor stub
  12.                 super();
  13.                 System.out.println("我是无参构造函数");
  14.                
  15.         }
  16.         //定义一个含参的构造函数
  17.         public People(String name,int age)
  18.         {
  19.                 super();
  20.                 this.name=name;
  21.                 this.age=age;
  22.                 System.out.println("我是有参构造函数");
  23.                 System.out.println("我的名字是"+name+",我的年龄是"+age);
  24.                
  25.         }
  26.         public static void main(String[] args) {
  27.                 // TODO Auto-generated method stub
  28.                 //创建无参对象
  29.                 People p=new People();
  30.                
  31.                 System.out.println("---------------------------");
  32.                 //创建有参对象
  33.                 People p1=new People("张三",22);
  34.                
  35.         }

  36. }
复制代码



如题,当调用有参的构造函数的时候,会加载super();这一句,然后调用无参构造函数,无参函数中的super();不就是在调用自己吗?最后不该输出

我是无参构造函数
---------------------------
我是无参构造函数
我是有参构造函数
我的名字是张三,我的年龄是22

为什么会是
我是无参构造函数
---------------------------
我是有参构造函数
我的名字是张三,我的年龄是22





8 个回复

倒序浏览
尼玛…………看花眼了    这里的super没有用,super是继承父类的,这里没有继承,真是2
回复 使用道具 举报
要有一颗会发现的心
回复 使用道具 举报
天空飘来5个字
回复 使用道具 举报
其实People类的父类是Object类,所以super()调用的是Object的构造函数,楼主完全可以把两个super()删掉,因为在实例People对象的时候系统会默认调用的。
回复 使用道具 举报
People p=new People();   这句话将调用父类中的无参构造函数
回复 使用道具 举报
People p1=new People("张三",22); 这将调用父类中的带参构造函数
回复 使用道具 举报
看不清,眼已瞎
回复 使用道具 举报
调用父类的无参构造函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马