Вызов частных методов
Вызов частного метода из открытого точно такой же, как и вызов любого другого метода:
public void doStuff() {
System.out.println("Stuff done.");
}
private void doOtherStuff() {
System.out.println("Other stuff done.");
}
public void showHowItWorks() {
doStuff();
doOtherStuff();
// or if you prefer this style:
this.doStuff();
this.doOtherStuff();
}
Важное отличие состоит в том, что вы можете вызывать только закрытые методыиз класса, в котором они были определены:
class PublicExample {
public static void doStuff() {
System.out.println("Stuff done.");
}
}
class PrivateExample {
private static void doStuff() {
System.out.println("Stuff done.");
}
}
class Example {
public static void Main(String[] args) {
PublicExample.doStuff(); // Works
PrivateExample.doStuff(); // Doesn't work (because it's private and defined in a different class)
}
}
Возвращаемые значения
private void isValid(int hour, int minute) {
if (hour >= 0 && hour <=23) {
System.out.println("Hour is valid");
hourIsValid = true;
} else {
System.out.println("Hour is not valid");
hourIsValid = false;
System.exit(0);
}
}
Проблема с этим подходом заключается в том, что ваша программа немедленно умирает, если вы ввели неверный час или минуту.Что если я захочу выполнить цикл, пока не получу хороший ввод?
Я думаю, что главная проблема в том, что вы не знаете, как вернуть значение из метода .Вот пример функции, которая всегда возвращает true
:
public static boolean trueExample() {
return true;
}
public static void main(String[] args) {
boolean returnValue = trueExample();
System.out.println("trueExample() returned " + returnValue);
}
Вы также можете сделать ее более сложной:
/**
* @return the input value minus one.
*/
public static int oneLess(int num) {
return num - 1;
}
public static void main(String[] args) {
int num = 10;
// Print 10
System.out.println(num);
// Print 9
num = oneLess(num);
System.out.println(num);
// Print 8
num = oneLess(num);
System.out.println(num);
}
Вот та, которая будет возвращать true
, если num
находится в диапазоне 10-20 и false
в противном случае:
public boolean isValid(int num) {
return num >= 10 && num <= 20;
}
Эта версия точно делает то же самое, но вам может быть легче читать, так как она более явная:
public boolean isValid(int num) {
/* Numbers less than 10 are invalid */
if(num < 10) {
return false;
}
/* Numbers greater than 20 are invalid */
else if (num > 20) {
return false;
}
/* By process of elimination, everything else is valid */
else {
return true;
}
}
Дайте мне знать, если этого недостаточно, чтобы помочь вам с вашей проблемой.