[英]Can a method reference a method in the same class if that method references the original method
[英]Method taking reference to an array of references?
我錯過了我的Java講座之一,主題是類,方法,構造函數等。作業是一項任務:
創建一個Person類,其對象描述人,並且只包含兩個屬性:名稱(字符串)和出生年份(int)。 在此類中,定義
建設者的名字和出生年月;
構造函數僅使用名稱並將出生年份設置為默認值1990;
方法isFemale如果該人是女性,則返回true(我們不十分理智地假設只有女性和所有女性的名字都以字母'a'結尾); 否則,該方法返回false;否則返回false。
靜態函數getOlder獲取對Person類的對象的兩個引用,並將引用返回給這兩個人員中的較大者;
靜態函數getOldest將對數組引用的引用歸類為Person類的對象,並將該引用返回給該數組中表示的最早的人;
靜態函數getYoungestFemale引用對Person類的對象的引用數組,並將引用返回給數組中表示的最小的女性;如果該數組中沒有任何女性,則返回null。
在一個單獨的類中,編寫一個主要函數,其中測試了Person類的全部功能。
我查看了一些教程和解釋,但我並沒有直奔這里尋求幫助,但是在扯掉頭發兩小時后,我只能提出以下建議:
public class Person {
String name;
int yob; //year of birth
public Person() {
Person jan = new Person("Jan", 1995); //the names are polish
Person joanna = new Person("Joanna", 1993);
Person michal = new Person("Michal", 1980);
Person beata = new Person("Beata", 1979);
Person kazimierz = new Person("Kazimierz", 1998);
Person magdalena = new Person("Magdalena", 1999);
}
public Person(String name, int yob) {
this.name = name;
this.yob = yob;
}
public Person(String name) {
this.name = name;
this.yob = 1990;
}
public static boolean isFemale(String name) {
if(name.equals("Joanna")) {
return true;
} else {
return false;
}
}
public static String getOlder(Person x?, Person y?) { // if I understand the task correctly, I should reference any two names?
if(x?.yob>y?.yob) {
return x?.name;
} else {
return y?.name;
}
//getOldest and getYoungestFemale methods go here
}
}
但是,我無法繞過最后三個步驟。 我的大腦簡直是沸騰。 如果有人可以解釋最后三個要點,那將真的有幫助( getOlder
引用任何2個人和getOldest
/ getYoungestFemale
)
如果您沒有時間解釋,那么一些“引用數組的方法”的例子應該足以讓我基本理解。
提前致謝。
這里有一些提示,可以幫助您自己解決問題,而無需我給出解決方案;)
1)
public static String getOlder(Person x?, Person y?) {
// if I understand the task correctly, I should reference any two names?
if(x?.yob>y?.yob) {
return x?.name;
} else {
return y?.name;
}
}
這段代碼幾乎是正確的! 只需刪除問號! 還請記住,老年人的早期偏見。 編輯,同樣,您需要返回對該人的引用,而不是他們的名字,因此返回x或y。
2) getOldest
和getYoungestWoman
Person[]
是對Person對象的引用的數組。 您應該能夠了解如何遍歷數組的元素並比較值。
3)一個額外的功能:如果在構造函數中聲明了這6個Person對象,則將無法在該類的其他方法中訪問它們。 可以在此處創建Person對象,但是必須在構造函數之外聲明它們。 在課堂上宣告他們。
通常..您不稱其為“對某物的引用數組的引用”,而只是說“某物的數組”。 即使對象的數組對象的引用數組。 就像對象的變量一樣,它只是對對象的引用。
Type heyImAReference = new ImTheObject();
所以當你寫
Person person = new Person();
您將具有類Person作為類型,將person
作為對該類的實例(或對象)的引用,並將new Person()
的結果實體作為被引用的實際事物。 通常稱為“實例”,或者在您的情況下稱為“對象”。
當涉及到各種各樣的人時,你會
Person[] persons = new Person[5];
通過new Person[5]
創建一個具有5個插槽的數組實例,盡管您有5個引用,但實際上每個插槽中都可以形象地使用一個Person
實例。 Person[0]
是第一個, Person[1]
是第二個,依此類推。 因此,這是“對Person類的對象的引用數組”。
persons
是對此的參考。 因此,它是“對對Person類的對象的引用數組的引用”
static
函數getOldest
獲取對指向Person類對象的引用數組的引用,並將引用返回給該數組中表示的最舊的person 只不過是
static Person getOldest(Person[] persons) {
...
}
我將這種方法稱為采用一個Persons數組並返回一個Person的方法。 盡管從技術上講,它們只是引用而已。 Person
對象不會“移動”
首先創建另一個具有main方法的類。 在main中創建一個數組:
Person[] parr = new Person[6];
//Then fill all your person to this array:
parr[0] = new Person("name", year);
parr[1] = ....
然后將此數組處理程序傳遞給您的方法:
Person p1 = Person.findSomething(parr);
面對面課程:
public static Person findSomething(Person[] parr){
for (Person p : parr){
if (p.name.endsWith("a")) return p;
}
return null;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.