Getter / Setter из отдельного файла класса в Java - PullRequest
2 голосов
/ 25 апреля 2010

Я новичок в Java, и для назначения HW нам пришлось создать класс Person, который имеет конструктор, getter / setter для атрибутов firstName, lastName, phone. Это находится в отдельном файле от старого назначения HW (Person.java). Теперь мы должны использовать этот класс Person в нашем новом назначении HW (LoanApplication.java). Так что, если один из атрибутов

private Person client

мне нужно снова создавать геттер / сеттеры или конструктор? Иначе, как каждый экземпляр LoanApplicaiton узнает, с каким атрибутом Person он должен идти?

Как JVM узнает, что она может использовать Person.class, даже если мой LoanApplicaiton.class не расширяет Person.class? Спасибо.

Ответы [ 2 ]

1 голос
/ 25 апреля 2010

Нет, вам не нужно переопределять Person. Просто добавьте скомпилированный файл "* .class" в ваш путь к классу и добавьте соответствующий оператор импорта, чтобы использовать экземпляры класса Person. Это, по сути, одно из преимуществ объектно-ориентированного программирования; старые объекты могут быть повторно использованы в новых проектах (при условии, что они хорошо спроектированы и «хорошо выполняют одно и одно» и не связаны с логикой для конкретного приложения).

Я не знаю, что вы имеете в виду, «как каждый экземпляр LoanApplicaiton знает, с каким атрибутом Person он должен идти», но если предположить, что ваши получатели / установщики общедоступны, то вы можете вызывать эти функции из вашего класса LoanApplication. Например, если у Person есть функция с именем "setName ()", у вас в приложении ссуды есть экземпляр person с именем "p" и именем "n", тогда вы можете вызвать "p.setName (n)" для установки имя р к п.

Виртуальная машина Java (JVM) имеет эту концепцию, называемую «classpath», которая определяет, где она ищет файлы «* .jar» и «* .class», содержащие определения различных классов. Классы сохраняются в формате, который JVM может прочитать и принять их определения. Что касается того, чтобы не расширять его ... существует несколько различных способов взаимодействия объектов в объектно-ориентированном языке программирования; наследование (один объект расширяет другой), полиморфизм (несколько разных классов предоставляют разные реализации для одного и того же интерфейса ... это конкретное применение наследования), композиция (класс состоит из экземпляров других классов), делегирование (делегаты одного класса его работа с одним или несколькими экземплярами других классов (что является частным случаем композиции), среди многих других шаблонов проектирования ООП. В этом случае вам нужна композиция.

0 голосов
/ 25 апреля 2010

Нет, если правильно написать class Person в Person.java, вы можете просто использовать его в class LoanApplication в LoanApplication.java. На этом этапе Person.java не нужно изменять, но вы do должны убедиться, что компилятор Java может найти его при компиляции LoanApplication.java.

Это означает, что вам, возможно, придется добавить некоторые операторы import или, проще, возможно, вам просто нужно скопировать Person.java в тот же каталог домашней работы, что и LoanApplication.java.

Вам НЕ нужно extends существующий класс, чтобы использовать его. Лучшим способом часто является составление вместо наследование (см .: Effective Java 2nd Edition : пункт 16. Композиция Favour по сравнению с наследованием). Например, Person.java, вероятно, использует String firstName и т. Д. Это означает, что class Person составлен с использованием String (среди прочего), но он не наследуется от String (который в любом случае final class) .


Как JVM узнает, что она может использовать Person.class, хотя мой LoanApplication.class не расширяется Person.class?

Это не имеет ничего общего с наследованием. Даже если class LoanApplication extends Person (кстати, идея УЖАСНЫЙ ), JVM все равно нужно будет найти Person.class для загрузки LoanApplication.class (как JVM находит .class файлы, это совсем другая проблема!)

Честно говоря, я не думаю, что сейчас стоит беспокоиться о таких деталях. Если вы серьезно относитесь к программированию, я рекомендую получить IDE, такую ​​как Eclipse ; он позаботится об управлении файлами, компоновке, компиляции и т. д., чтобы вы могли сосредоточиться на задаче real , которая является программированием .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...