如何使用实例引用实例?
我正在尝试最小化我创建实例的程度,因为我不是特别擅长Java。 目前我在Main中有一组其他类的实例,一个简单的例子……
public final class ClassName extends JavaPlugin { AntiSwear antiSwear = new AntiSwear(); Spam spam = new Spam(); @Override public void onEnable() { // Plugin startup logic } @Override public void onDisable() { // Plugin shutdown logic } }
而不是制作越来越多的实例,我只想创建一个主类的实例, ClassName className = new ClassName();
并运行类似className.spam...
基本上把我的胡言乱语变成英语:我只想看看如何使用实例引用实例。
有几种方法可以解决这个问题。 第一种方法是使用public
访问修饰符:
public AntiSwear antiSwear = new AntiSwear(); public Spam spam = new Spam();
这使得实例可以从ClassName
的实例访问,例如:
ClassName className = new ClassName(); className.spam...; className.antiSwear...;
第二种方法涉及getter 和setter ,它提供了一个方法,可以由包含实例并具有访问权限的任何类调用,或者由子类调用:
AntiSwear antiSwear = new AntiSwear(); Spam spam = new Spam(); public AntiSwear getAnitSwear(){ return this.antiSwear; } public Spam getAnitSwear(){ return this.spam; }
现在您可以相应地调用getter:
ClassName className = new ClassName(); className.getSpam()...; className.getAntiSwear()...;
第三种方法涉及static
访问修饰符:
public static AntiSwear antiSwear = new AntiSwear(); public static Spam spam = new Spam();
这使得实例可以从每个外部类访问,甚至是那些不包含实例的外部类。 这是因为:
static
成员属于类而不是特定实例。这意味着即使您创建了一百万个类的实例,或者您没有创建任何实例,也只存在一个
static
字段的实例。 它将由所有实例共享。
例如:
//Notice that I am not creating an instance, I am only using the class name ClassName.spam...; ClassName.antiSwear...;