Description section turn from: http://yangmingjiayou.iteye.com/blog/151865
Before I explain these four keywords, I want to make a simple definition of the relationship between classes, for inheriting their own class,base class can think that they are their own children, and for their own directory of classes, think is their friends.
1, public:public indicates that the data member, the member function is open to all users, all users can directly make the call
2, private:private means private, private means that except class himself, no one can directly use, private property sacred inviolability, even children, friends, can not be used.
3, protected:protected for children, friends, is public, free to use, without any restrictions, and for other external class,protected become private.
Scope Current class same package descendant class other package
Public√√√√
Protected√√√x
Friendly√√xx
Private√xxx
Default to friendly when not written
Here is an example:
1.ftest.java
Java Code Collection code Packagescope; Public classFtest {Private intA=1; protected intb=2; Public intC=3; Private intShowa () {/*System.out.println (a);*/ returnA; } Public intshowa1 () {/*System.out.println (a);*/ returnA; } protected intShowb () {/*System.out.println (b);*/ returnb; } Public intSHOWC () {/*System.out.println (c);*/ returnC; } }
2.sontest.java
Java Code Collection code Packagescope; Import Staticorg.junit.assert.*; Importorg.junit.Test; Public classsontest {@Test Public voidTest () {ftest ft=Newftest (); /*the A variable of private type, although not directly obtained by FT.A, can get the value of a through the showa1 of public. * If a variable is completely private, then the Showa1 method is changed to private*/ inta1=ft.showa1 (); intb1=ft.b; intb=FT.SHOWB (); intc1=ft.c; intC=FT.SHOWC (); System.out.println ("Private variable a1=" +a1+ "protected variable b=" +b+ "protected variable b1=" +b1+ "public variable c=" +c+ "public variable c1=" +C1); } }
Java scope public, private, protected, and no-write differences