试图让我的表演方法进行工作(不能从静态上下文中引用非静态方法)



对不起,我是大学编程的新手。这是我们测试的练习问题,并且是在代码跑步者上设置的。整个主要方法以及所有类,方法,构造函数和变量已经给我,我必须让显示的类打印出我写的内容。但是println中的Bride.getAge()Location.getSuburb()将不起作用。我需要添加其他内容吗?

public class Location {
    public static void main(String[] args) {
        Bride person = new Bride("Amy Cronos", 29);
        Location place = new Location("Tonsley", "South Rd");
        Wedding wed = new Wedding(person,place);
        show(wed);
    }
    public static void show(Wedding wed){  
        System.out.println("Wedding data:" );
        System.out.println("Bride: " + wed.getBride() + ", age: " + Bride.getAge);
        System.out.println("Location: " + wed.getPlace() + ", suburb: " + Location.getSuburb());
    }
    private String suburb;
    private String street;
    Location(String suburb, String street){
        this.suburb = suburb;
        this.street = street;
    }
    public String getSuburb(){
          return suburb;
    }
    public String getStreet(){
          return street;
    }
    public class Bride {
        private String name;
        private int age;
        Bride(String name, int age){
            this.name = name;
            this.age = age;
        }
        public String getName(){
            return name;
        }
        public int getAge(){
            return age;
        }
    }
    public class Wedding {
        private Bride person;
        private Location place;
        Wedding(Bride person, Location place){
            this.person = person;
            this.place = place;
        }
        public Bride getPerson(){
            return person;
        }
        public Location getPlace(){
            return place;
        }
    }
}

您需要在show方法中更正以下行

System.out.println("Bride: " + wed.getBride() + ", age: " + wed.getPerson().getAge());
System.out.println("Location: " + wed.getPlace() + ", suburb: " + wed.getPlace().getSuburb());

由于您使用的类名称与方法,Bride.getAge()Location.getSuburb(),因此这些方法被认为是静态的。因此错误。由于这些不是静态方法,因此您需要使用类的对象来访问它们而不是类名。

您已经传递了类新娘和位置的对象,因此您需要获得如下代码的值:尝试以下代码,并尝试理解Java中的对象,静态是不同的。

public static void show(Wedding wed){
System.out.println("Wedding data:" );
System.out.println("Bride: " + wed.getPerson() + ", age: " + wed.getPerson().getAge());
System.out.println("Location: " + wed.getPlace() + ", suburb: " + wed.getPlace().getSuburb());
}

最新更新