关于#java#的问题,请各位专家解答!

img


这个问题怎么解决啊求解答应该怎么更改呢如果不用
s.name='张三'
s.age=20
s.occupation='学生'
就直接在那个括号里更改应该怎么办


public class Main5 {
//    这里要定义静态类,要不然最后在主类的时候没办法使用
     public static abstract class Person{
//        定义参数
        String name;
        int age;
        String occupation;
//        定义方法
        public abstract String talk();
//        这里有创建一个有参类才能把参数放进来
        public Person(String name,int age,String occupation){
            this.name=name;
            this.age=age;
            this.occupation=occupation;
        }
    }
//     这里也是要定义静态类static,要不然他就是动态的,静态类是他自带的东西,动态类是后面创建对象创建的,所以不能在静态类里面调用动态类
static class Student extends Person{
public Student(String name, int age, String occupation) {
        super(name, age, occupation);
        // TODO Auto-generated constructor stub
    }
    public String talk() {
        return "姓名:"+this.name+",年龄:"+this.age+",职业:"+this.occupation;
    }
}
//        这里可以看出这个是静态类
    public static void main(String[] args) {
        Student s=new Student("张三",20,"学生");
                System.out.println(s.talk());

    }

}

这里一共有两个问题,第一个问题就是没有有参构造类,第二问题就是在静态类里面调用了动态类,我已经把完成的代码发出来了,具体事情看注释即可,关于静态类和动态类的相关问题(也就是你这个最初报错的原因)->https://blog.csdn.net/weixin_40378974/article/details/109922641这里有具体介绍,大概意思就是静态类是创建一开始就带着的,动态类是要创建对象之后才存在的。
如果有帮助望采纳,不要让不负责的答案误人子弟

你要把有参的构造方法加上

默认是无参构造,你需要加一个有参构造方法

public Student(String name, int age, String occupation){
  this.name  = name;
依次赋值即可
}