如何在另一个类中访问对象

时间:2016-05-15 17:08:43

标签: java oop

我在同一个包中有两个类很容易:

public class Cat {

String name;
int age;

public Cat(String name, int age) {
    this.name = name;
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}
}

在一个课程中,我实施了一些猫:

public class CatImpl {

Cat first = new Cat("Black", 2);
Cat second = new Cat("White", 3);

public Cat getFirst() {
    return first;
}

public Cat getSecond() {
    return second;
}
}

在我的主要课程中:

public class JavaApp {
    public static void main(String[] args) {
    //here
    }
}

我写的地方"在这里"我喜欢这样称呼:

first.getName(); 
or
first.setName("Luis");

没有这个:

CatImpl b = new CatImpl();

因为如果在另一个类中我再次实现了一个新的CatImpl();我的更改(例如:first.setAge(4))将丢失。所以我喜欢从很多其他类中获取这些对象并设置变量而不会丢失任何更改。

2 个答案:

答案 0 :(得分:1)

您可以将这些猫定义为常量并静态访问它们

public class CatImpl { 
public static final Cat first = new Cat("Black", 2); 
public static final Cat second = new Cat("White", 3); public Cat getFirst() {

然后

public static void main(String[] args) { 

//here 
CatImpl.first... // this is a cat and is constant


}

答案 1 :(得分:1)

当您执行CatImpl cats = new CatImpl()时,您正在创建一个包含2只猫的对象:BlackWhite。如果您希望其他类使用它,请将它交给它们。这就是面向对象编程的工作原理。

public class JavaApp {
    public static void main(String[] args) {
        CatImpl myCats = new CatImpl();
        myCats.getFirst().setName("Luis");

        ACatsUsingClass useCats = new ACatsUsingClass (myCats);
        useCats.printCats(); // This will print "Luis" and "White"
    }
}    


public class ACatsUsingClass {

    private CatImpls cats;

    public ACatsUsingClass (CatImpls cats ){
        this.cats = cats;
    }

    public void printCats(){
        System.out.println(cats.getFirst().getName());  // Prints "Luis"
        System.out.println(cats.getSecond().getName());  // Prints "White"  
    }