Дэкларацыя Instance поле ў Java

Я проста атрымліваю павесіць ООП і гуляў з Java шмат. Адна з праблем у мяне вырашае, ці трэба мне асабістае поле асобніка для канкрэтнага класа. Ёсць правіла, я павінен выкарыстоўваць з пункту гледжання, трэба я зрабіць што-то прыватны выпадак поля не?

Дзякуючы.

0

4 адказы

Ну, спытаеце сябе, ці з'яўляецца гэта лагічна частка стану асобніка аб'екта. Гэта нешта пра аб'ект, які дзейнічае на працягу ўсяго тэрміну эксплуатацыі аб'екта, ці гэта тое, якое прымяняецца толькі на працягу аднаго метаду (у гэтым выпадку ён павінен быць лакальнай зменнай)? Ці гэта на самай справе ставіцца да самога класу (у гэтым выпадку ён павінен быць статычным)?

Калі б вы маглі даць некалькі прыкладаў, калі вы не зусім ўпэўнены, што гэта дапаможа.

(Звярніце ўвагу, што я меркаваў, што выбар тут від пераменны - статычны, асобнік або лакальны асобнік зменныя павінен у значнай ступені заўсёды быць прыватным :).

1
дададзена

Калі падміргнуў натуральная частка аб'екта ці нешта аб'ект павінна выканаць нейкую задачу на рэгулярнай аснове, то ўсе сродкі зрабіць яго атрыбутам. Калі гэта канстанта, то вы павінны зрабіць яго публічны пераменны клас (ці хутчэй пастаянны: P). Гэта значыць, аб'явіць яго «публічны статычны фінал ж/д»

Публічныя зменныя асобніка не выкарыстоўваюцца так часта, таму што гэта часта прыводзіць да Messier кода. Падумайце, як паказвалася раней зменных асобніка (ці атрыбутаў), як стан аб'ектаў. Падміргнулі зразумелей звычайна працуюць на вадкім змяніць стан аб'ектаў шляхам выканання аперацый на ім, а не жангляваць грамадскасць вакол. Поспехаў.

1
дададзена

"Avoid public fields except for constants. (Many of the examples in the tutorial use public fields. This may help to illustrate some points concisely, but is not recommended for production code.) Public fields tend to link you to a particular implementation and limit your flexibility in changing your code." Controlling Access to Members of a Class

0
дададзена

Пры вывучэнні аб'ектна-арыентаванага праграмавання, думаць пра яго, як спосаб мадэлявання рэальных паняццяў, як код. Назоўнікі становяцца аб'ектамі; і дзеянні, зробленыя імі, або па назоўнікаў становяцца метадамі. Зменныя з'яўляюцца ўласцівасцю гэтых назоўнікаў. Напрыклад, калі ў вас ёсць клас, які прадстаўляе Аўтамабіль , slamOnTheBreaks() будзе метад Driver назваў бы пляснуць на перапынках, і а Аўтамабіль мае некаторы колькасць месцаў ўнутры, ці не так? Таму пераменная асобніка будзе Int numberOfSeats; .

Падумайце аб пераменным экзэмпляры на службовай неабходнасці ведаць, службовую неабходнасць змен асновы. Робячы numberOfSeats грамадскасці, што дазволіла б Driver , каб змяніць колькасць месцаў у аўтамабілі, які не мае ніякага сэнсу. Ім трэба толькі ведаць, колькі месцаў у аўтамабіля ёсць, што яны могуць даведацца, калі яны трапляюць у машыне, а дакладней, выклік метаду грамадскі ИНТ getNumberOfSeats() .

Як ужо згадвалася Дэні, гісторыя розная для канстант. Калі значэнне з'яўляецца канстантай, ён будзе заставацца сталым на працягу ўсяго часу выканання праграмы, напрыклад, калі вы хочаце Driver Bob адзіным Driver для ўсіх тых, Аўтамабіль і Грузавік Ствараныя аб'екты, Bob лепш быць.) даступныя, інакш публіка, так што ён можа быць у любой Аўтамабіль і Грузавік (не мяркуючы спадчыну паміж Car і Грузавік ) і б.) не могуць быць змененыя.

0
дададзена