Skip to main content

Access can be package - Private, Protected and Public ( Differences )

Java has four access modifier namely privateprotected and public. package level access is default access level provided by Java  if no access modifier is specified. These access modifiers are used to restrict accessibility of a class, method or variable on which it applies. We will start from private access modifier which is most restrictive access modifier and then go towards public which is least restrictive access modifier, along the way we will see some best practices while using access modifier in Java and some examples of using private and protected keywords.

private keyword in Java
private keyword or modifier in java can be applied to member field, method or nested class in Java. you can not use the private modifier on top level class. private variables, methods, and class are only accessible on the class on which they are declared. private is the highest form of Encapsulation Java API provides and should be used as much as possible. It's best coding practice in Java to declare variable private by default. a private method can only be called from the class where it has declared. 

As per Rules of method overriding in Java, a private method can not be overridden as well. the private keyword can also be applied to the constructor and if you make constructor private you prevent it from being sub-classed. a popular example of making the constructor private  is Singleton class in Java which provides getInstance() method to get object instead of creating a new object using the constructor in Java. here are some differences between private and protectedpublic and package level access.



package or default access level in Java
there is no access modifier called package instead package is a keyword which is used to declare a package in Java, a package is a directory on which a class in Java belongs. Package or default access level is second highest restrictive access modifier after private and any variable, method or class declared as package-private is only accessible on the package it belongs. the good thing about default modifier is that top level class can also be package-private if there is no class level access modifier.

protected keyword in Java
The difference between private and protected keyword is that protected method, variable or nested class not only accessible inside a class, inside the package but also outside of package on a subclass. if you declare a variable protected means anyone can use it if they extend your class. the top level class can not be make protected as well.

public keyword in Java
public is the least restrictive access modifier in Java programming language and its bad practice to declare field, method or class by default public because once you make it public it's very difficult to make any change on the internal structure of class as it affects all clients using it. Making class or instance variable public also violated the principle of Encapsulation which is not good at all and affects maintenance badly. instead of making variable public you should make it private and provided public getter and setter. the public modifier can also be applied to a top-level class. In Java name of the file must be same with public class declared in the file.

That's all difference between privateprotectedpackage and public access modifier. As you have seen the difference between private and public lies on how accessible a particular field, method or class would have. public means you can access it anywhere while private means you can only access it inside its own class.

Just to note all privateprotected or public modifier are not applicable to local variables in Java. a local variable can only

Comments

Popular posts from this blog

Error:Execution failed for task ':app:processDebugGoogleServices'. > Missing api_key/current_key object

First in your JSON file Replace "api_key" : [] with "api_key" : [{ "current_key" : "" }] Then the gradle build will be successful but when you run your application you may get errors like the following.. Error : Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug' . > com . android . build . api . transform . TransformException : com . android . builder . packaging . DuplicateFileException : Duplicate files copied in APK META - INF / LICENSE File1 : C : \Users\bucky\.gradle\caches\modules - 2 \files - 2.1 \com . fasterxml . jackson . core\jackson - core\2 . 2.2 \d 20be6a5ddd6f8cfd36ebf6dea329873a1c41f1b \jackson - core - 2.2 . 2.jar File2 : C : \Users\bucky\.gradle\caches\modules - 2 \files - 2.1 \com . fasterxml . jackson . core\jackson - databind\2 . 2.2 \3c8f6018eaa72d43b261181e801e6f8676c16ef6\jackson - databind - 2.2 . 2.jar File3 : C : \Users\bucky\.gradle\caches\mod

How to get mobilesdk_app_id parameter in google-services.json

The google-services.json file is generally placed in the app/ directory,  but as of version 2.0.0-alpha3 of the plugin support was added for build types , which would make the following directory structure valid: app / src / main / google - services . json dogfood / google - services . json mytype1 / google - services . json mobilesdk_app_id : At the following page:  https://developers.google.com/mobile/add?platform=android&cntapi=signin&cntapp=Default%20Demo%20App&cntpkg=com.google.samples.quickstart.signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fandroid%2Fstart%3Fconfigured%3Dtrue&cntlbl=Continue%20with%20Try%20Sign-In You can create a new project and add services to it. This website will automatically generate a google-services.json file for your new project.