kvaks
@kvaks

Как обратится к экземпляру класса?

Изучаю java сам, подскажите как обратится к другому классу кроме как объявляя его заново?

public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        Dog dog = new Dog();
        cat.setAge(8);
        System.out.println( cat.getAge() );
    }
}


public class Dog {
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}


public class Cat {
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void question() {
        // как тут обратится к Dog?
        Dog dog = new Dog();  // так?
    }
}
  • Вопрос задан
  • 1468 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Araya
Вы работаете с экземпляром класса, то есть объектом.
Если хотите работать с данными класса Dog в Cat, то создавайте объект, то есть как у вас и написано
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
1) передать этот класс в качестве аргумента
2) Если вам нужно создать экземпляр класса и что-либо с ним сделать, то да:
public void question() {
        Dog dog = new Dog();
    }


но если вам нужно обратиться к определенному ранее созданному экземпляру класса, то:
public void question(Dog dog) {
        int age = dog.getAge();
    }
Ответ написан
Комментировать
xez
@xez Куратор тега Java
TL Junior Roo
public class Main {

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.setName("Vasyka");

        Dog dog = new Dog();
        dog.setName("Barbos");

        Human human = new Human();
        human.setCat(cat);
        human.setDog(dog);

        System.out.println(human.getDog().voice());
        System.out.println(human.getCat().voice());
    }
}

interface Animal {
    String voice();
}

abstract class Pet implements Animal {
    private String name;

    public String getName() {
        return name;
    }

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

class Dog extends Pet {
    @Override
    public String voice() {
        return getName() + " says Woof";
    }
}

class Cat extends Pet {
    @Override
    public String voice() {
        return getName() + " says Meaw";
    }
}

class Human {
    private Pet cat;
    private Pet dog;

    public Pet getCat() {
        return cat;
    }

    public void setCat(Pet cat) {
        this.cat = cat;
    }

    public Pet getDog() {
        return dog;
    }

    public void setDog(Pet dog) {
        this.dog = dog;
    }
}
Ответ написан
Комментировать
Rebel-Cat
@Rebel-Cat
public void question(Dog dog){
//Тут соответственно, то что ты хочешь от пса
}

Само собой взаимодействие кота и собаки будет происходить в 3м классе
Cat brit = new Cat();
Dog mops = new Dog();

brit.question(mops)  //кот обратился к собаке через метод question

Лучше всего question вынести в interface.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
25 апр. 2024, в 16:12
2000 руб./за проект
25 апр. 2024, в 16:08
130000 руб./за проект