Skip to main content

Understanding Access Modifier

Java Program
package LAB_Report;
/*
2. Write a program in Java to demonstrate the usage of access modifiers: public, private,
protected and default.
*/
class AccessModifier{
int defaultValue; // this is visible within the package only
public int publicValue; // this is visible everywhere
protected int protectedValue; // this is visible within the package and subclasses
private int privateValue; // this is visible within the class only


public void setPrivateValue(int privateValue) {
this.privateValue = privateValue;
}

public int getPrivateValue() {
return privateValue;
}
}
class AccessModifierProtected extends AccessModifier{

public void setValue(int value2){
this.protectedValue = value2;
}
public int getValue2(){
return protectedValue;
}
}
public class Lab_2 {
public static void main(String[] args) {
AccessModifier am = new AccessModifier();
AccessModifierProtected amp = new AccessModifierProtected();
// Access Modifiers are used for encapsulation purposes for security reason

am.defaultValue = 1;
System.out.println("Default Value:"+am.defaultValue);
// Default access modifier is written without any keyword
// We can access default modifier within the same package
// In this package "defaultValue" is initialized as default modifier in the class "AccessModifier"
// Therefore I can access it in the same class "AccessModifier"
// child class as it is in the same package and in the main function too
am.publicValue = 2;
System.out.println("Public Value:"+ am.publicValue);
// Public access modifier is achieved using "public" keyword
// we access the defaultValue of Public modifier everywhere within or outside the package subclasses
// In this package "publicValue" is initialized as Public modifier in the class "AccessModifier"
// So, it accessible everywhere in the subclass, main function
am.protectedValue = 3;
System.out.println("Protected Value(same package):"+ am.protectedValue);
amp.setValue(4);
System.out.println("Protected Value(childClass):"+ amp.getValue2());
// Protected access modifier is written with "protected" keyword
// we can access the defaultValue of Protected keyword within the package or subclasses
// Here, in this program, I have initialized "protectedValue" as Protected modifier
// and also created subclass "AccessModifierProtected"
// now I can access this protected protectedValue within the class AccessModifier and its subclass
am.setPrivateValue(5);
System.out.println("Private Value:"+ am.getPrivateValue());
// Private access modifier is written with "private" keyword
// we can access private modifier defaultValue within same class only
// Here, the defaultValue of privateValue is initialized as Private defaultValue
// So, I can access this in the same class AccessModifier only
// to access this defaultValue we can make getter and setter in the same class
// I have made the setPrivateValue and getPrivateValue methods to set and get defaultValue of the private modifier
// It is beneficial to use private modifier if we don't wanna give direct access to the variable


}
}
    Output:
    Default Value:1
    Public Value:2
    Protected Value(same package):3
    Protected Value(childClass):4
    Private Value:5

Comments

Popular posts from this blog

OSPF Configuration

Configuring OSPF  Step 1: Enter Configuration Mode Router>   enable Router#  configure terminal Step 2: Enable OSPF Enable OSPF with a process ID. The process ID is locally significant and can be any number. Router(config)# router ospf <process-Id> Step 3: Set the OSPF Router ID Setting a unique OSPF Router ID is optional but recommended for stability and troubleshooting. The Router ID should be a unique IPv4 address within the OSPF domain. Router(config-router)# router-id <router-id> Step 4: Define Networks to Include in OSPF Specify which networks will participate in OSPF and their corresponding areas. Ensure the areas match across all routers in the OSPF domain. Router(config-router)# network <network-address> <wildcard-mask> area <area-id> Step 5: Save the configuration Router(config-router)# exit Router(config)# do write / do wr Verification Commands View OSPF Neighbors show ospf neighbor View the OSPF Routing Table show ip route ospf...

Java Overview

What is Java?  Java is a popular programming language for developing web, mobile, and desktop applications. It is a high-level and object-oriented programming language. It is platform-independent. It required the Java Virtual Machine(JVM) to run the Java code. Java is similar to C/C++. Application of Java Mobile Application Desktop Application Web Application Embedded System Smart Card Payment System Games History of Java Java's history dates back to the early 1990s when a group of researchers at Sun Microsystems led by James Gosling started a "green project". The goal of this project was to create a portable home-appliance software that could run on embedded processor chips. Initially, the team planned to use C++ programming language for this project. However, they encountered portability issues with C++ and decided to develop a new programming language from scratch. This led to the creation of the Oak programming language, named after an oak tree outside Gosling's o...

Configuring Static NAT for Any Network Scenario

Introduction Network Address Translation (NAT) is a fundamental technique used in networking to translate private IP addresses to public IP addresses and vice versa. Static NAT is a method where a specific private IP address is mapped to a specific public IP address.  Configuration Steps Router Configuration Enable NAT Service Router(config)# ip nat inside source static [inside-local] [inside-global] Replace [inside-local] with the private IP address to be translated. Replace [inside-global] with the public IP address to translate to. Configure Interfaces Router(config)# interface [inside-interface] Router(config-if)# ip address [inside-ip-address] [subnet-mask] Router(config-if)# ip nat inside Router(config-if)# no shutdown Router(config-if)# exit Router(config)# interface [outside-interface] Router(config-if)# ip address [outside-ip-address] [subnet-mask] Router(config-if)# ip nat outside Router(config-if)# no shutdown Router(config-if)# exit Replace [inside-interf...