Home >类库下载 >java类库 >Analysis of java modifiers

Analysis of java modifiers

巴扎黑
巴扎黑Original
2016-11-26 09:14:071716browse

Dear viewers, today we will discuss related issues about access modifiers in Java. This is also a common question in interviews.
Simply put, access modifiers are created by code writers to distinguish when the code can be accessed and when the code cannot be accessed. Access restrictions in Java are divided into four categories: friendly (the so-called default type), public, private, and protected.
Today we will take a look at the two categories that are more difficult to distinguish, namely friendly and protected.
First let’s look at friendly. When we do not add any modifiers in front of a member, the access level of the member is the default level. At this time, other classes in the same package as the class can access these members, while those in different packages class cannot access these members, as follows:

Java code

package com.a1;

/**

* A belongs to the package com.a1

* @author Will

*

*/

public class A {

//Members are all at the default access level

int i;

String str;

void print(){

System.out.println("i:"+i+";str:"+str);

}

}


Java code

package com.a1;

/**

* testA1 belongs to com.a1

* @author Will

*

*/

public class testA1 {

public static void main(String[] args) {

//Since testA1 and A belong to the same package, So you can access friendly members

a a = new a ();

system.out.println (a.i);

System.out.println (a.str);

a.print ();

}

}


Java code

package com.b1;

import com.a1.A;

/**

* testA2 belongs to com.b1

*

* @author Will

*

*/

public class testA2 {

Public Static Void Main (String [] ARGS) {

// Since testa2 is not under the same package as A, you cannot access friendly members

// Removing the comments will report an error. );

Of course , readers may encounter a situation, that is, when the package is not specified, class files in different folders can call each other's friendly members. The reason is that when the package is not specified, all files belong to the default package by default. Therefore, friendly members can be called to each other.

Next, let’s take a look at the protected type. This type is very similar to the friendly (i.e. default) type, the only difference is inheritance. To put it simply, as long as the class file does not belong to the same package (including inheritance), other class files cannot access friendly members; but when the class inherits, regardless of whether it belongs to the same package, in the case of inheritance, Subclasses can access protected members of the parent class.

Java code

package com.a1;

/**

* A belongs to the package com.a1

* i, str is friendly type

* j, str1 is protected type

* @author Will

*

*/

public class A {

int i;

String str;

protected int j;

protected String str1;

Public A(){

}

void print(){

System.out.println("i:"+i+";str:"+str);

}

protected void print(int k){

                                                                        using using use using using                   through   through   through out using   out out out through out out through  ‐ off ‐ ‐ ‐‐ ‐ ,                                                                                   to to

package com.a1 ;

/**

* testA1 belongs to com.a1

* @author Will

*


*/

public class testA1 {

public static void main(String[] args) {

Since testA1 and A belong to the same package, you can access the friendly Members

                                          using using use using               ’ ’s ’ out’s out’s out’s out’s out’s out’s out’s’ out’s’ together out outps out out‐‐ out right's'' out's's to's  ‐ ‐                               

System.out .println(a.j);

              System.out.println(a.str1);

Java code

package com.b1;

import org.junit.Test;

import com.a1.A;

@Test

public void test() {En extendsa extendsa = new extendsa ();

// When no more package and inheritance, the parent -friendly member can not be called

// .println (extendsA.i); And in the case of inheritance, Callable parent class protected members

System.out.println(extendsA.j);

System.out.println(extendsA.str1);


extendsA.print(1);

}

}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:JAVA basicsNext article:JAVA basics