Member 13771743 Ответов: 1

Как получить доступ к частным или общедоступным переменным в другом классе через 1 класс


Черт возьми все таки я впервые задал здесь вопрос
Запрос помощи относительно правильного дизайна кодирования[^]

может быть, я просто дурак, но я не мог догнать то, что они там упомянули, хотя я провел некоторые исследования и пришел к выводу, что статическая переменная-это то, что мы присваиваем переменной, когда это общее для всех объектов . Однако я все еще застрял с тем, как я должен получить доступ к переменным, которые находятся в одном классе из другого .(также, пожалуйста, поправьте меня, если моя идея о статических переменных неверна)это код, который я только что придумал, чтобы сделать вопрос более легким для понимания

package testing1;

import java.util.Scanner;

class HerDetails {

    public String her_Name = null;
    public int her_age = 0;
    public String her_eye_colour = null;
    private String her_Hair_Colour = null;


    public void getHerDetails() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter Her name");
        her_Name = sc.next();
        System.out.println("Enter her age");
        her_age = sc.nextInt();
        System.out.println("Enter her eye colour");
        her_eye_colour = sc.next();
        System.out.println("Enter her hair colour");
        her_Hair_Colour = sc.next();


    }

    public void herDetails() {

        System.out.print(her_Name);
        System.out.println(her_age);
        System.out.println(her_eye_colour);


    }
}

class  HisDetails{

        public String his_Name=null;
        private int his_Age;
        private String his_eye_colour;



        public void getHisDetails(){
        Scanner sc1=new Scanner(System.in);
            System.out.println("Enter His name");
            his_Name= sc1.next();
            System.out.println("Enter His Age");
            his_Age=sc1.nextInt();
            System.out.println("Enter his eye colour");
            his_eye_colour= sc1.next();



        }
        public void displayHisDetails(){
            System.out.println(his_Name);
            System.out.println(his_Age);
            System.out.println(his_eye_colour);

        }



}




public class Main {

    public static void main(String[] args) {

         HerDetails h1=new HerDetails();
         HisDetails h2=new HisDetails();
        h1.getHerDetails();
        h2.getHisDetails();
        h1.herDetails();
         h2.displayHisDetails();

    }
}


Итак, как мне это сделать представьте, что я хочу создать класс под названием "theirdetails", куда я собираюсь вставить такие данные, как
int theDayTheyMet
и
int ageDifference
или Струна
theirNamesTogether
что, я думаю, будет иметь смысл для вас, надеюсь . Поэтому для того, чтобы сделать это, мне явно нужно использовать возраст этих двух людей, чтобы найти разницу между двумя другими классами, и их имена, чтобы собрать их имена вместе . Как я могу получить эти значения, введенные из первого класса в другой класс ? я хочу знать правильный путь?

Что я уже пробовал:

Я не уверен , что я много читал, но мне не повезло, я знаю, что сеттеры и геттеры работают, но это то, что я должен использовать, остается сомнением ? это значит, что я все еще не знаю своих основ.? пожалуйста, просвети меня

1 Ответов

Рейтинг:
1

Maciej Los

Java-это ООП[^] язык и поэтому вы можете использовать наследование, полиморфизм[^], прием.
Пример из приведенной выше ссылки:

class Teacher {
   String designation = "Teacher";
   String collegeName = "Beginnersbook";
   void does(){
	System.out.println("Teaching");
   }
}

public class PhysicsTeacher extends Teacher{
   String mainSubject = "Physics";
   public static void main(String args[]){
	PhysicsTeacher obj = new PhysicsTeacher();
	System.out.println(obj.collegeName);
	System.out.println(obj.designation);
	System.out.println(obj.mainSubject);
	obj.does();
   }
}


На таким же образом, вы можете продлить Person класс по созданию Man и Woman классы, производные от Person.

Что касается этого заявления:
Цитата:
я хотел создать класс под названием "theirdetails", куда я собираюсь вставить такие данные, как
int theDayTheyMet
и
int ageDifference
или Струна
theirNamesTogether


Вы всегда можете создать Couple или Pair класс, который может содержать 2 открытых члена: Man и Woman.

class Couple {
    private Man his = new Man(...);
    private Woman her = new Woman(...);

    //another members, methods here
    
}

Потому что Man и Woman базовый класс-это Person, вы можете упростить свой Couple класс к:
class Couple {
    private List<Person> persons = new ArrayList<Person>();

    //another members, methods here
}

Один Список[^] и список ArrayList[^] предоставьте несколько методов для добавления/итерации/удаления элементов.

[РЕДАКТИРОВАТЬ]
Я бы хранил дата[^] рождения вместо возраста. Вы можете рассчитать возраст таким образом: year_of_current_date - year_of_birth.
Видеть:
Вычислить возраст от даты рождения на Java - Memorynotfound[^]
дата - как я могу рассчитать чей-то возраст на Java?[^]


CPallini

5.

Maciej Los

Спасибо, Карло.

Member 13771743

Большое спасибо но я не беспокоился о том чтобы найти возраст я просто хотел знать как использовать переменные из одного класса в другой Как правильно это делать как насчет сеттеров и геттеров какую роль они играют

Maciej Los

Ну, вы спросили о дизайне, но не упомянули в своем вопросе о геттерах и сеттерах...

Member 13771743

хороший момент мой плохой, спасибо вам за это, хотя то, что я действительно хочу, - это как получить доступ к переменным одного класса через другие, как я показал в приведенном выше примере
нужно ли мне создавать такой объект, чтобы использовать его внутри другого класса

я обнаружил, что, сделав его "общедоступным статическим" внутри класса (а не внутри метода), он может использовать его в любом классе по строке nm1=Class.Attribute() правильно ли сделать его общедоступным статическим только для того, чтобы я мог использовать его в любом классе? если теперь как я могу получить доступ к переменной в одном классе из другого tht имеет присвоенное ей значение