- Private class in java
- Java interview questions on access modifiers
- Java ‘private’ Access Modifier
- 1. Overview
- 2. The Keyword
- 3. Fields
- 4. Constructors
- 5. Methods
- 6. private in Action
- 7. Classes
- 8. Conclusion
- Can we create private class in java
- Learn Latest Tutorials
- Preparation
- Trending Technologies
- B.Tech / MCA
- Javatpoint Services
- Training For College Campus
- What is private Keyword in Java
- Java private variable Example
- Java private method Example
- Java private class Example
- Java private constructor Example
- How to access private fields of class outside the class
- Recommended Posts
- Top Related Articles:
- About the Author
Private class in java
Yes, we can declare a class as private but these classes can be only inner or nested classes. We can’t a top-level class as private because it would be completely useless as nothing would have access to it.
Example 1 with non inner class:
private class Main { public static void main(String[] args) { System.out.println("Inside private class"); } }
Main.java:1: error: modifier private not allowed here private class Main ^ 1 error
Main.java:1: error: modifier private not allowed here private class Main ^ 1 error
Example 2 with non inner class:
private class Show{ void display(){ System.out.println("Inside display method."); } } public class Main { public static void main(String[] args) { Show show = new Show(); show.display(); } }
Main.java:1: error: modifier private not allowed here private class Show{ ^ 1 error
Main.java:1: error: modifier private not allowed here private class Show< ^ 1 error
Example with inner class:
class Display { //Private nested or inner class private class InnerDisplay { public void display() { System.out.println("Private inner class method called"); } } void display() { System.out.println("Outer class (Display) method called"); // Access the private inner class InnerDisplay innerDisplay = new InnerDisplay(); innerDisplay.display(); } } public class Main { public static void main(String args[]) { // Create object of the outer class (Display) Display object = new Display(); // method invocation object.display(); } }
Outer class (Display) method called Private inner class method called
Outer class (Display) method called Private inner class method called
Java interview questions on access modifiers
Java ‘private’ Access Modifier
The Kubernetes ecosystem is huge and quite complex, so it’s easy to forget about costs when trying out all of the exciting tools.
To avoid overspending on your Kubernetes cluster, definitely have a look at the free K8s cost monitoring tool from the automation platform CAST AI. You can view your costs in real time, allocate them, calculate burn rates for projects, spot anomalies or spikes, and get insightful reports you can share with your team.
Connect your cluster and start monitoring your K8s costs right away:
We rely on other people’s code in our own work. Every day.
It might be the language you’re writing in, the framework you’re building on, or some esoteric piece of software that does one thing so well you never found the need to implement it yourself.
The problem is, of course, when things fall apart in production — debugging the implementation of a 3rd party library you have no intimate knowledge of is, to say the least, tricky.
Lightrun is a new kind of debugger.
It’s one geared specifically towards real-life production environments. Using Lightrun, you can drill down into running applications, including 3rd party dependencies, with real-time logs, snapshots, and metrics.
Learn more in this quick, 5-minute Lightrun tutorial:
Slow MySQL query performance is all too common. Of course it is. A good way to go is, naturally, a dedicated profiler that actually understands the ins and outs of MySQL.
The Jet Profiler was built for MySQL only, so it can do things like real-time query performance, focus on most used tables or most frequent queries, quickly identify performance issues and basically help you optimize your queries.
Critically, it has very minimal impact on your server’s performance, with most of the profiling work done separately — so it needs no server changes, agents or separate services.
Basically, you install the desktop application, connect to your MySQL server, hit the record button, and you’ll have results within minutes:
DbSchema is a super-flexible database designer, which can take you from designing the DB with your team all the way to safely deploying the schema.
The way it does all of that is by using a design model, a database-independent image of the schema, which can be shared in a team using GIT and compared or deployed on to any database.
And, of course, it can be heavily visual, allowing you to interact with the database using diagrams, visually compose queries, explore the data, generate random data, import data or build HTML5 database reports.
The Kubernetes ecosystem is huge and quite complex, so it’s easy to forget about costs when trying out all of the exciting tools.
To avoid overspending on your Kubernetes cluster, definitely have a look at the free K8s cost monitoring tool from the automation platform CAST AI. You can view your costs in real time, allocate them, calculate burn rates for projects, spot anomalies or spikes, and get insightful reports you can share with your team.
Connect your cluster and start monitoring your K8s costs right away:
We’re looking for a new Java technical editor to help review new articles for the site.
1. Overview
In the Java programming language, fields, constructors, methods, and classes can be marked with access modifiers. In this tutorial, we’ll talk about the private access modifier in Java.
2. The Keyword
The private access modifier is important because it allows encapsulation and information hiding, which are core principles of object-oriented programming. Encapsulation is responsible for bundling methods and data, while information hiding is a consequence of encapsulation — it hides an object’s internal representation.
The first thing to remember is that elements declared as private can be accessed only by the class in which they’re declared.
3. Fields
Now, we’ll see some simple code examples to better understand the subject.
First, let’s create an Employee class containing a couple of private instance variables:
In this example, we marked the privateId variable as private because we want to add some logic to the id generation. And, as we can see, we did the same thing with manager attribute because we don’t want to allow direct modification of this field.
4. Constructors
Let’s now create a private constructor:
private Employee(String id, String name, boolean managerAttribute)
By marking our constructor as private, we can use it only from inside our class.
Let’s add a static method that will be our only way to use this private constructor from outside the Employee class:
public static Employee buildManager(String id, String name)
Now we can get a manager instance of our Employee class by simply writing:
Employee manager = Employee.buildManager("123MAN","Bob");
And behind the scenes, of course, the buildManager method calls our private constructor.
5. Methods
Let’s now add a private method to our class:
private void setManager(boolean manager)
And let’s suppose, for some reason, we have an arbitrary rule in our company in which only an employee named “Carl” can be promoted to manager, although other classes aren’t aware of this. We’ll create a public method with some logic to handle this rule that calls our private method:
public void elevateToManager() < if ("Carl".equals(this.name)) < setManager(true); >>
6. private in Action
Let’s see an example of how to use our Employee class from outside:
public class ExampleClass < public static void main(String[] args) < Employee employee = new Employee("Bob","ABC123"); employee.setPrivateId("BCD234"); System.out.println(employee.getPrivateId()); >>
After executing ExampleClass, we’ll see its output on the console:
In this example, we used the public constructor and the public method changeId(customId) because we can’t access the private variable privateId directly.
Let’s see what happens if we try to access a private method, constructor, or variable from outside our Employee class:
public class ExampleClass < public static void main(String[] args) < Employee employee = new Employee("Bob","ABC123",true); employee.setManager(true); employee.privateId = "ABC234"; >>
We’ll get compilation errors for each of our illegal statements:
The constructor Employee(String, String, boolean) is not visible The method setManager(boolean) from the type Employee is not visible The field Employee.privateId is not visible
7. Classes
There is one special case where we can create a private class — as an inner class of some other class. Otherwise, if we were to declare an outer class as private, we’d be forbidding other classes from accessing it, making it useless:
public class PublicOuterClass < public PrivateInnerClass getInnerClassInstance() < PrivateInnerClass myPrivateClassInstance = this.new PrivateInnerClass(); myPrivateClassInstance.id = "ID1"; myPrivateClassInstance.name = "Bob"; return myPrivateClassInstance; >private class PrivateInnerClass < public String name; public String id; >>
In this example, we created a private inner class inside our PublicOuterClass by specifying the private access modifier.
Because we used the private keyword, if we, for some reason, try to instantiate our PrivateInnerClass from outside the PublicOuterClass, the code won’t compile and we’ll see the error:
PrivateInnerClass cannot be resolved to a type
8. Conclusion
In this quick tutorial, we’ve discussed the private access modifier in Java. It’s a good way to achieve encapsulation, which leads to information hiding. As a result, we can ensure that we expose only the data and behaviors we want to other classes.
As always, the code example is available over on GitHub.
Slow MySQL query performance is all too common. Of course it is. A good way to go is, naturally, a dedicated profiler that actually understands the ins and outs of MySQL.
The Jet Profiler was built for MySQL only, so it can do things like real-time query performance, focus on most used tables or most frequent queries, quickly identify performance issues and basically help you optimize your queries.
Critically, it has very minimal impact on your server’s performance, with most of the profiling work done separately — so it needs no server changes, agents or separate services.
Basically, you install the desktop application, connect to your MySQL server, hit the record button, and you’ll have results within minutes:
Can we create private class in java
Learn Latest Tutorials
Preparation
Trending Technologies
B.Tech / MCA
Javatpoint Services
JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.
- Website Designing
- Website Development
- Java Development
- PHP Development
- WordPress
- Graphic Designing
- Logo
- Digital Marketing
- On Page and Off Page SEO
- PPC
- Content Development
- Corporate Training
- Classroom and Online Training
- Data Entry
Training For College Campus
JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week
Like/Subscribe us for latest updates or newsletter
What is private Keyword in Java
The private keyword is an access modifier in java. It can be used for variables, methods, constructors and inner classes.
- The private is the most restrictive modifier compared to other modifiers such as public, default and protected.
- It cannot be applied to a class (except inner class) or an interface.
- The private variables and methods can only be accessed within the class. No other class can access these.
- If a class has private constructor, then the object of this class cannot be created outside this class.
Java private variable Example
This program throws an error because we are trying to access a private variable outside the class.
class MyClass < private String str="I am a private variable"; >public class JavaExample < public static void main(String[] args) < MyClass obj = new MyClass(); System.out.println(obj.str); >>
Java private method Example
Let’s see, if we can access a private method outside the class in which it is declared.
class MyClass < private void demo() < System.out.println("I am a private method of class MyClass"); >> public class JavaExample < public static void main(String[] args) < MyClass obj = new MyClass(); obj.demo(); >>
Java private class Example
In this example, we have declared a class private. As you can see that the program didn’t run fine and threw a compilation error. This is because a class (except an inner class) cannot have a private access specifier.
private class JavaExample < void demo()< System.out.println("Hello"); >public static void main(String[] args) < JavaExample obj = new JavaExample(); obj.demo(); >>
Java private constructor Example
Here, we have a class MyClass that has a private default constructor. We are trying to create an object of this class in another class JavaExample . This threw a compilation error because you cannot create an object of a class with private constructor, outside the class.
class MyClass < //private constructor private MyClass()< System.out.println("Private constructor of MyClass"); >> public class JavaExample < public static void main(String[] args) < //creating an object of MyClass MyClass obj = new MyClass(); >>
How to access private fields of class outside the class
We use getter and setter methods.
class Teacher < private String designation = "Teacher"; private String collegeName = "Beginnersbook"; public String getDesignation() < return designation; >protected void setDesignation(String designation) < this.designation = designation; >protected String getCollegeName() < return collegeName; >protected void setCollegeName(String collegeName) < this.collegeName = collegeName; >void does() < System.out.println("Teaching"); >> public class JavaExample extends Teacher < String mainSubject = "Physics"; public static void main(String args[])< JavaExample obj = new JavaExample(); /* Note: we are not accessing the data members * directly we are using public getter method * to access the private members of parent class */ obj.setCollegeName("My College"); obj.setDesignation("My Teacher"); System.out.println(obj.getCollegeName()); System.out.println(obj.getDesignation()); System.out.println(obj.mainSubject); obj.does(); >>
My College My Teacher Physics Teaching
Recommended Posts
Top Related Articles:
About the Author
I have 15 years of experience in the IT industry, working with renowned multinational corporations. Additionally, I have dedicated over a decade to teaching, allowing me to refine my skills in delivering information in a simple and easily understandable manner.