最近在学习 继承 这一块
这一段代码是网上找的,是一个有问题的代码
然后我自己想修改一下
结果还是有问题
希望高手帮下忙!!public class student {
  int num;
  String name;
 public student(int num,String name){
    this.num=num;
    this.name=name; 
  }
 void show1()
 {
 System.out.println("姓名:"+name+"\n学号:"+num);
 }
}class Univer extends student{
  boolean marry;
 void Univer(int num,String name,boolean b){
 super(num,name);
 marry=b;
  }
 void show2()
 {
 System.out.println("婚否:"+marry);
 }
}
class ep{
  public static void main(String args[]){
    Univer stu01=new Univer(1234,"小强",false);
   stu01.show1();
   stu01.show2();
    
  }
}

解决方案 »

  1.   

    调试 出现的问题Implicit super constructor student() is undefined for default constructor. Must 
     define an explicit constructor
      

  2.   

    student中加入一个无参构造函数
    创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。public class student {
          int num;
          String name;
         public student(){}
         public student(int num,String name){
            this.num=num;
            this.name=name; 
          }
         void show1()
         {
             System.out.println("姓名:"+name+"\n学号:"+num);
         }
        }
      

  3.   

    哦,这样啊还有两个错误
    这一行 : super(num,name);
    报错:Constructor call must be the first statement in a constructor
    但是,这一句已经是 构造函数的第一句了,我就不明白了
    这一行: Univer stu01=new Univer(1234,"小强",false);
    报错:The constructor Univer(int, String, boolean) is undefined
      

  4.   

    class Et {
          int num;
          String name;
         public Et(int num,String name){
            this.num=num;
            this.name=name; 
          }
         void show1()
         {
             System.out.println("姓名:"+name+"\n学号:"+num);
         }
        }class Univer extends Et{
        
    boolean marry;
         Univer(int num,String name,boolean b){
             super(num,name);
             marry=b;
          }
         void show2()
         {
             System.out.println("婚否:"+marry);
         }
        }
       public class Test{
          public static void main(String args[]){
            Univer stu01=new Univer(1234,"小强",false);
           stu01.show1();
           System.out.println();
           stu01.show2();
            
          }
        }看一下,java基础,
      

  5.   

    class Univer extends student{
          boolean marry;
         void Univer(int num,String name,boolean b){
             super(num,name);
             marry=b;
          }
         void show2()
         {
             System.out.println("婚否:"+marry);
         }
        }
    这一个类无构造函数,这个类的构造函数应该如下:
     public Univer(int num,String name,boolean b){
             super(num,name);
             marry=b;
          }
      

  6.   


    public class student { 
        int num; 
        String name; 
        public student(int num,String name){ 
           this.num=num; 
           this.name=name; 
       } 
         void show1() { 
             System.out.println("姓名:"+name+"\n学号:"+num); 
        } 

    class Univer extends student{
          boolean marry; 
          void Univer(int num,String name,boolean b){
              super(num,name); 
              marry=b; } 
          void show2() { 
              System.out.println("婚否:"+marry); 
        } 

    class ep{ 
         public static void main(String args[]){ 
             Univer stu01=new Univer(1234,"小强",false); 
             stu01.show1(); 
              stu01.show2(); 
       } 
    }
    红色部分改为public Univer就行了。
      

  7.   

    没变色。
    void Univer(int num,String name,boolean b){
             super(num,name);
             marry=b;
          }
    上面这个不是构造方法
    要改为
    public Univer(int num,String name,boolean b){
             super(num,name);
             marry=b;
          }
      

  8.   

    同学,你java基础还没怎么学吧,或者还没掌握吧,
    多看书,多练习,把基础巩固一下
    3年前我也被这问题困扰过
    继续努力啊,前途无量