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 View OSPF Pro

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-interface]