我正在努力学习Java / OOP。我正在尝试从“熊”对象中打印name属性。我一直在寻找谷歌,但不知道该搜索什么。除了打印语句之外的所有内容都应正确。
public class test
{
public static void main(String args[])
{
System.out.println(NFCnorth.bears.name);
}
}
class Team
{
String name;
public Team(String name)
{
this.name=name;
}
}
class NFCnorth
{
private String divisionName="NFC North";
Team vikings=new Team("Minnesota Vikings");
Team bears=new Team("Chicago Bears");
Team packers=new Team("Green Bay Packers");
Team lions=new Team("Detroit Lions");
}
答案 0 :(得分:0)
你可以访问它(假设它在main
中可见):
System.out.println(bears.team);
但惯用法是为类Team
提供名称的getter:
public class Team {
String name;
public Team(String name) {
this.name=name;
}
public String getName() {
return name;
}
}
并从你的主要使用它:
System.out.println(bears.getName());
答案 1 :(得分:0)
你需要做
System.out.println(new NFCnorth().bears.name);
或者让NFCnorth中的熊场像这样静止:
static Team bears=new Team("Chicago Bears");
在OOP中有各种类的对象。给定类的每个对象具有相同的字段集(可以具有不同的值)。你定义了一个类NFCnorth来拥有字段,所以这个类的每个对象都有这样的字段。要获得NFCnorth类的对象,您需要使用new NFCnorth()
创建它。一个类本身没有那些字段,所以NFCnorth.bears是非法的。
将字段标记为静态意味着它将成为类中的字段,然后NFCnorth.bears就可以了。
答案 2 :(得分:-1)
使用常数:
public static final Team VIKINGS = new Team("Minnesota Vikings");
public static final Team BEARS = new Team("Chicago Bears");
public static final Team PACKERS = new Team("Green Bay Packers");
public static final Team LIONS = new Team("Detroit Lions");
或者您需要先实例化NFCnorth
。此外,在良好的OOP中,您应该应用封装并为您的属性创建getter(至少在Java中,其他一些语言对getter使用不同的约定,其中在访问属性和通过getter访问属性之间没有语法差异):< / p>
new NFCnorth().getBears().getName()