一个错也找不到哎。期末考试怎么办啊

5、改正下面程序中的错误。

class AbstractDemo {

 public static void main(String[] args) {

      Student s = new Student("zhang", 45);

      s.study();

      s.show(); 

      Worker w = new Worker("zhan", 65);

      w.study();

      Person person = new Person(); // (1) 

 }

}

abstract class Person {

 private String name;

 private int age;

 public Person(String name, int age) {

       name = name; // (2) 

       this.age = age;

 }

 public void study(); // (3) 

 public void show() {

      System.out.println("我是....");

 }

}

class Student extends Person {

 public Student(String name, int age) {

      super(); // (4) 

 }

 public int study() { // (5) 

      System.out.println("练习");

 }

}

class Worker extends Person {

 public Worker(String name, int age) {

      super(name, age);

 }

 public void study() {

      System.out.println("自学");

 }

}


class AbstractDemo {
    public static void main(String[] args) {
        Student s = new Student("zhang", 45);
        s.study();
        s.show();
        Worker w = new Worker("zhan", 65);
        w.study();
        Person person = new Student("zhang",35); // (1)
    }
}

abstract class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name; // (2)
        this.age = age;
    }
    public abstract void study(); // (3)
    public void show() {
        System.out.println("我是....");
    }
}

class Student extends Person {
    public Student(String name, int age) {
        super(name,age); // (4)
    }
    public void study() { // (5)
        System.out.println("练习");
    }
}

class Worker extends Person {
    public Worker(String name, int age) {
        super(name, age);
    }
    public void study() {
        System.out.println("自学");
    }
}

你这注释里面不就是错误位置吗,都告诉你哪里有错误了还不会改吗
1.person类没有无参构造函数,需要传参,或者写person=s
2.name=name改为this.name=name
3.没有函数体,分号改为{}
4.super(name,age)
5.int改为void

//改动地方
// (1)    
Person person = new Person("小曾", 45); // (1)
//(2)
this.name = name; // (2)
// (3)
   public void study(){
        System.out.println("我是学习呢");
    }
//(4)
super(name,age); // (4)
//(5)
public void study() { // (5)

     System.out.println("练习");

}

学还是要好好学~课还是要好好上!

抽象类怎么实例化

第(4)有错误,抽象类person只有一个两个参数的构造方法,所以子类中进行构造时必须显示调用super,带两个参数

自己对照着去改吧


public abstract class Person {
    private String name;

    private int age;

    public Person() {
    }

    public Person(String name, int age) {

        this.name = name; // (2)

        this.age = age;

    }

    public abstract void study(); // (3)

    public void show() {

        System.out.println("我是....");

    }
}
class Student extends Person {
    
    public Student() {}
    
    public Student(String name, int age) {
        super(name, age);
    }

    public void study() { // (5)

        System.out.println("练习");

    }
}

class Worker extends Person {
    public Worker(String name, int age) {
        super(name, age);
    }

    public void study() {

        System.out.println("自学");

    }
}

public static void main(String[] args) {
        Student s = new Student("zhang", 45);
        s.study();
        s.show();
        Worker w = new Worker("zhan", 65);
        w.study();
        Person person = new Student();
        person.show();
    }

要挂了

img

img

img

img

img