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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class  DemoSuper
{
        public static void main(String[] args)
        {
                Student stu=new Student();
                        stu.show();
                Student stu1=new Student("小小");
        }
}
class Person
{
         private int age=10;
        private String name="pa";
        public Person(String name)
        {
                this.name=name;
                System.out.println(this.name);

        }
        public  void show()
        {
                System.out.println(age);
        }

}
class Student extends Person
{        int age=20;
        public Student()
        {
                System.out.println("小黑");
        }
        public Student(String name)
        {
                super(name);
       
        }
        public void show()
        {
                super.show();
                int age=30;
                System.out.println(age);
                System.out.println(this.age);
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

5 个回复

倒序浏览
你的父类没有空参数的构造函数,但是子类有一个空参数的构造函数,这时候子类的空参数构造函数在对子类对象初始化时没有访问到父类相应的空参数构造函数对 对象的初始化情况,肯定会报错,只要在父类中也加入一个空参数的构造
  1. class  DemoSuper
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Student stu=new Student();
  6.                         stu.show();
  7.                         
  8.                 Student stu1=new Student("小小");
  9.         }
  10. }
  11. class Person
  12. {
  13.          private int age=10;
  14.         private String name="pa";
  15.         public Person()
  16.         {
  17.                 System.out.println("调用父类空参数的构造函数");
  18.         }
  19.         public Person(String name)
  20.         {
  21.                 this.name=name;
  22.                 System.out.println(this.name+"(调用父类的指定参数类型的构造函数)");

  23.         }
  24.         public  void show()
  25.         {
  26.                 System.out.println(age+""+"调用父类的show方法");
  27.         }

  28. }
  29. class Student extends Person
  30. {        int age=20;
  31.                         public Student()
  32.                         {     
  33.                                 //省略了 super();因为系统会默认的加上这条语句来访问父类的空参数构造函数
  34.                             System.out.println("小黑");
  35.                         }
  36.         public Student(String name)
  37.         {
  38.                 super(name);
  39.         
  40.         }
  41.      
  42.         public void show()
  43.         {
  44.                 super.show();
  45.                 int age=30;
  46.                 System.out.println("子类中的show方法:");
  47.                 System.out.println(age);
  48.                 System.out.println(this.age+":(默认初始化值)");
  49.                
  50.         }
  51. }
复制代码
函数就行了
回复 使用道具 举报
想要那片海 发表于 2015-5-31 13:52
你的父类没有空参数的构造函数,但是子类有一个空参数的构造函数,这时候子类的空参数构造函数在对子类对象 ...

哦了谢谢哈
回复 使用道具 举报
好牛逼啊,一看就不是0基础啊
回复 使用道具 举报
一个类如果不声明构造函数时,实例化类时调用默认构造函数即无参构造函数,如果显示声明论文构造函数,想要再实例化类时,使用无参构造函数,必须显示声明
回复 使用道具 举报
父类没有无参构造
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马