No. Microsoft should disable (remove) the declaration of any instance variables as public. This will enforce the encapsulation of OO principles.
The keyword public is an access specifier. A variable or a method that is declared public is publicly accessible to any member of the project. Any class or method can freely access other public methods and variables of another class.
Class Variables or Instances variables are variables that are declared inside a class and are available for the whole class. They are available for all instances of that class and are not specific to any method. Ex: public class Test { private String name = "Rocky"; } Here name is a class variable.
Variables of the super class can be accessed using the super keyword. Here is an example. class A { int a; } class B extends A { int a; public B() { super.a = 5; } }
Public class variables and methods are those that can be called at any stage in the program's execution. These members are deemed "public" in that they are accessible outside of the class. On the other hand, private variables and methods can only be accessed through the class in which they are defined. These members are deemed "private" in that they are hidden by the client and can only be called in their respective classes.
Class - A class can be defined as a template/ blue print that describe the behaviors/states that object of its type support.Classes in Java:A class is a blue print from which individual objects are created.A sample of a class is given below: public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }A class can contain any of the following variable types.Local variables . variables defined inside methods, constructors or blocks are called local variables. The variable will be declared and initialized within the method and the variable will be destroyed when the method has completed.Instance variables . Instance variables are variables within a class but outside any method. These variables are instantiated when the class is loaded. Instance variables can be accessed from inside any method, constructor or blocks of that particular class.Class variables . Class variables are variables declared with in a class, outside any method, with the static keyword.A class can have any number of methods to access the value of various kind of methods. In the above example, barking(), hungry() and sleeping() are variables.
The default (no qualifiers) is different from any of those three.
Any members of a superclass which are declared as public or protected can be used by all subclasses.
The main difference between the class variable and Instance variable is, first time, when class is loaded in to memory, then only memory is allocated for all class variables. Usually static variables are called class variables. These variables are available throughout the execution of the application and the values are common to the class. You can access them directly without creating an object of the class. Instance variables are normal variables declared in a class, that would get initialized when you create an instance of the class. Every instance of the class would have a copy of the variable and you need a class instance (object) to access these variables
Private variables can only be accessed from outside of a class by using any public function of that same class. Or this can be accomplished by using Friend functions.
Local Variables There are two types of variables based on the location of declaration 1. Instance Variables- Declared inside a class, but outside of any method's body. 2. Local Variables- Declared inside a method's body inside a class.
A (concrete) class defines all his methods and can have any kind of instance variable and is declared with the 'class' keyword. Unlike an interface that doesn't implements any of his methods and his variables must be static and final. An interface is defined with the 'interface' keyword.//This is a classpublic class MyClass{public String name;private int age;public void myMethod(){//do something}}//This is a interfaceinterface MyInterface {public static final String name;public static final int age;public void myMethod(); // This method is not implemented}An other difference is that a class can be inheritance by other class but a interface must be implemented using the keyword 'implements'.interface Runnable(){void run();}public class MyOtherClass implements Runnable{public void run(){// insert interesting code here}}
Static data members are local to the class, not to any instance of the class. That is, you do not need to instantiate an object of the class to access them. They are shared variables, not unlike global variables, the only difference being that that can also be hidden behind static member accessors and/or mutators (get and set methods) of the class. However, a public static data member is a global variable in all but name. Since they do not belong to any instance of the class, they must be initialised outside of the class, and outside of any other code blocks. In other words, they are initialised at compile time and are therefore available at runtime, and can therefore be accessed from the main function if a public interface is implemented or the member is declared public. If it is declared private, the variable is treated as a shared variable that is only accessible to all static members of the class, to all instances of the class and to all friends of the class. If declared protected, it is also accessible to derived classes.