2015-07-16 3 views
2

Мне интересно, должны ли методы доступа в Java всегда возвращать значение. Потому что вы можете «получить доступ» к методу только для печати и т. Д.В Java методы accessor всегда должны возвращать значение?

Например, можно ли использовать метод ниже в качестве метода доступа в классе?

public static void getCapacity(){ 
    System.out.print("Capacity is 0"); 
} 
+0

Если вы используете аксессор, вы не получаете доступ к методу; вы * используете * его. Использование accessor обычно обращается к некоторому состоянию целевого объекта/класса. И методы могут делать почти что угодно с заданным именем, поэтому не полагайтесь на него, чтобы диктовать, что делает этот метод. – awksp

+3

Я бы не рассматривал этот метод доступа. Если бы я столкнулся с этим кодом, над которым я работал, я бы переименовал метод в одно мгновение. 'getFoo()' по соглашению возвращает значение «foo», чтобы что-то еще смутить, кто пытается прочитать/использовать код. – azurefrog

+0

Я согласен с @azurefrog. Этот метод является скорее методом 'showCapacity'. – River

ответ

3

Для получения значения необходимы методы доступа. Мы вызываем метод для получения значения и продолжаем работать с ним (или, например, сравнивать с чем-то).

1 с принципами ООП принцип инкапсуляции - получить значения закрытых полей класса с использованием методов доступа.

Здесь мы ожидаем увидеть информационное сообщение:

public void printCapacity(){ 
    System.out.print("Capacity is 0"); 
} 

В этом методе мы ожидаем получить значение:

public int getCapacity(){ 
    return this.capacity; 
} 
7

Не совсем, но это нарушает конвенцию. Вы не получаете технически доступ к данным, просто отображая их.

1

Вы можете делать то, что вы хотите. Но на Java многие классы настраивают поведение дефолта по стандарту, Java Beans specification.

Часть этого поведения описывает аксессуаров членов класса. Если вы используете соглашение об именах получателя бобины (то есть get/is + member name), как описано в спецификации, но без связанного с ним поведения, вы будете путать многих читателей вашего кода.