Analysis of java modifiers
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);

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

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

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

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

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.

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

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

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

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