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

Analysis of java modifiers

Nov 26, 2016 am 09:14 AM
java

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 of this Website
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

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

RimWorld Odyssey How to Fish
1 months ago By Jack chen
Can I have two Alipay accounts?
1 months ago By 下次还敢
Beginner's Guide to RimWorld: Odyssey
1 months ago By Jack chen
PHP Variable Scope Explained
3 weeks ago By 百草

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1508
276
edge pdf viewer not working edge pdf viewer not working Aug 07, 2025 pm 04:36 PM

TestthePDFinanotherapptodetermineiftheissueiswiththefileorEdge.2.Enablethebuilt-inPDFviewerbyturningoff"AlwaysopenPDFfilesexternally"and"DownloadPDFfiles"inEdgesettings.3.Clearbrowsingdataincludingcookiesandcachedfilestoresolveren

Deploying a Java Application to Kubernetes with Docker Deploying a Java Application to Kubernetes with Docker Aug 08, 2025 pm 02:45 PM

Containerized Java application: Create a Dockerfile, use a basic image such as eclipse-temurin:17-jre-alpine, copy the JAR file and define the startup command, build the image through dockerbuild and run locally with dockerrun. 2. Push the image to the container registry: Use dockertag to mark the image and push it to DockerHub and other registries. You must first log in to dockerlogin. 3. Deploy to Kubernetes: Write deployment.yaml to define the Deployment, set the number of replicas, container images and resource restrictions, and write service.yaml to create

How to implement a simple TCP client in Java? How to implement a simple TCP client in Java? Aug 08, 2025 pm 03:56 PM

Importjava.ioandjava.net.SocketforI/Oandsocketcommunication.2.CreateaSocketobjecttoconnecttotheserverusinghostnameandport.3.UsePrintWritertosenddataviaoutputstreamandBufferedReadertoreadserverresponsesfrominputstream.4.Usetry-with-resourcestoautomati

VS Code shortcut to focus on explorer panel VS Code shortcut to focus on explorer panel Aug 08, 2025 am 04:00 AM

In VSCode, you can quickly switch the panel and editing area through shortcut keys. To jump to the left Explorer panel, use Ctrl Shift E (Windows/Linux) or Cmd Shift E (Mac); return to the editing area to use Ctrl ` or Esc or Ctrl 1~9. Compared to mouse operation, keyboard shortcuts are more efficient and do not interrupt the encoding rhythm. Other tips include: Ctrl KCtrl E Focus Search Box, F2 Rename File, Delete File, Enter Open File, Arrow Key Expand/Collapse Folder.

How to use a while loop in Java How to use a while loop in Java Aug 08, 2025 pm 04:04 PM

AwhileloopinJavarepeatedlyexecutescodeaslongastheconditionistrue;2.Initializeacontrolvariablebeforetheloop;3.Definetheloopconditionusingabooleanexpression;4.Updatethecontrolvariableinsidethelooptopreventinfinitelooping;5.Useexampleslikeprintingnumber

Fixed: Windows Update Failed to Install Fixed: Windows Update Failed to Install Aug 08, 2025 pm 04:16 PM

RuntheWindowsUpdateTroubleshooterviaSettings>Update&Security>Troubleshoottoautomaticallyfixcommonissues.2.ResetWindowsUpdatecomponentsbystoppingrelatedservices,renamingtheSoftwareDistributionandCatroot2folders,thenrestartingtheservicestocle

How to use Mockito for mocking in Java? How to use Mockito for mocking in Java? Aug 07, 2025 am 06:32 AM

To effectively use Mockito for Java unit testing, you must first add Mockito dependencies, add mockito-core dependencies in the Maven project, and add testImplementation'org.mockito:mockito-core:5.7.0' to the Gradle project; then create mock objects through @Mock annotation (combined with @ExtendWith(MockitoExtension.class)) or mock() method; then use when(...).thenReturn(...) and other methods to stub the method behavior of the mock object, or you can also configure different

What is the process of serialization for a Java object? What is the process of serialization for a Java object? Aug 08, 2025 pm 04:03 PM

Javaserializationconvertsanobject'sstateintoabytestreamforstorageortransmission,anddeserializationreconstructstheobjectfromthatstream.1.Toenableserialization,aclassmustimplementtheSerializableinterface.2.UseObjectOutputStreamtoserializeanobject,savin

See all articles