2014-02-12 2 views
3

Я изучаю базовый код на самом новичком уровне. Теперь я, наконец, начинаю баловать, на самом деле писать простые программы, и действительно застрял.Как вызвать метод объекта из другого класса без создания класса подкласса и/или наследования?

  • Я пишу простую программу, состоящую из двух классов; Люди, MainPage.

  • После запуска программы метод openApp() вызывается в основном методе из (MainPage Class).

    public static void main(String[] args) { 
    
         openApp();     
    } 
    
  • Далее, когда openApp() называется, пользователь имеет три меню, чтобы выбрать, чтобы перейти к тому, что выбираются путем ввода соответствующего номера

    т.е. 1 = Newsfeed, 2 = Профиль или 3 = Друзья.

общественного класса MainPage {

public static void openApp() { 


    System.out.println("Welcome to App!"); 
    System.out.println(); 
    System.out.println("To Select Option for:"); 
    System.out.println("Newsfeed : 1"); 
    System.out.println("Profile : 2"); 
    System.out.println("Friends : 3"); 
    System.out.println("Enter corresponding number: "); 
    int optionSelected = input.nextInt(); 

    switch (optionSelected) { 

    case 1: System.out.println("NewsFeed"); 
      break; 
    case 2: System.out.println("Profile"); 
      break; 
    case 3: System.out.println("Friends"); 
     break; 

     if (optionSelected == 3) { 
      people.friend();// Is it possible to write: friend() from "People" Class without extending to People Class 
        } 

    } 
} 
  • Если пользователь выбирает "друзей", то программа вызывает метод от
    Люди класса называют friend(People name)в классе MainPage, что печатает люди друзья объекта.

Моя попытка:

if (optionSelected == 3) { 
     people.friend(); 
       } 

Я получаю ошибку:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: people cannot be resolved

Проблемы Я не хочу, чтобы расширить касты в MainPage и наследовать все эти методы, но я все еще хотите вызвать метод Object из класса People для печати людей друзей объекта.

Примечание: только в случае, если кто-то хочет посмотреть на friend(People people) метод, который находится в классе людей:

public void friend(People people) { 
    System.out.println(people.friend); 

ответ

1

Отличный формат вопроса.

Вы можете объявить Object типа People и использовать его.

Пример

public class MainPage 
{ 
    People people = new People(); 

    // .. Some code. 

    if(optionSelected == 3) { 
     people.friend(); 
    } 
} 

Объяснение

Ваш метод friend является instance method. Это означает, что для доступа к нему необходимо иметь экземпляр созданного объекта. Это делается с помощью ключевого слова new.Во-вторых, если People не некоторая форма полезности класса, то ваш метод friend, вероятно, следует читать далее как:

public void friend() 
{ 
    System.out.println(this.friend); 
} 

И ради хорошего дизайна кода, помните, что ваш MainPage класс выводит пользователю, так что вы должен return значение, а не печать. Во-вторых, вы должны соответствовать хорошим стандартам именования, а в Java мы используем префикс get при получении члена класса.

public void getFriend() 
{ 
    return this.friend; 
} 

и в MainPage классе, вы должны напечатать это.

if(optionSelected == 3) 
{ 
    System.out.println(people.getFriend()); 
} 
+0

Спасибо за отличный ответ, Кристофер! Действительно оценил :) – user3289740

Смежные вопросы