Difference between Static methods and Instance methods

前端 未结 10 1034
青春惊慌失措
青春惊慌失措 2020-11-22 05:30

I was just reading over the text given to me in my textbook and I\'m not really sure I understand what it is saying. It\'s basically telling me that static methods or class

相关标签:
10条回答
  • 2020-11-22 05:51

    The behavior of an object depends on the variables and the methods of that class. When we create a class we create an object for it. For static methods, we don't require them as static methods means all the objects will have the same copy so there is no need of an object. e.g:

    Myclass.get();
    

    In instance method each object will have different behaviour so they have to call the method using the object instance. e.g:

    Myclass x = new Myclass();
    x.get();
    
    0 讨论(0)
  • 2020-11-22 05:51

    In short, static methods and static variables are class level where as instance methods and instance variables are instance or object level.

    This means whenever a instance or object (using new ClassName()) is created, this object will retain its own copy of instace variables. If you have five different objects of same class, you will have five different copies of the instance variables. But the static variables and methods will be the same for all those five objects. If you need something common to be used by each object created make it static. If you need a method which won't need object specific data to work, make it static. The static method will only work with static variable or will return data on the basis of passed arguments.

    class A {
        int a;
        int b;
    
        public void setParameters(int a, int b){
            this.a = a;
            this.b = b;
        }
        public int add(){
            return this.a + this.b;
       }
    
        public static returnSum(int s1, int s2){
            return (s1 + s2);
        }
    }
    

    In the above example, when you call add() as:

    A objA = new A();
    objA.setParameters(1,2); //since it is instance method, call it using object
    objA.add(); // returns 3 
    
    B objB = new B();
    objB.setParameters(3,2);
    objB.add(); // returns 5
    
    //calling static method
    // since it is a class level method, you can call it using class itself
    A.returnSum(4,6); //returns 10
    
    class B{
        int s=8;
        int t = 8;
        public addition(int s,int t){
           A.returnSum(s,t);//returns 16
        }
    }
    

    In first class, add() will return the sum of data passed by a specific object. But the static method can be used to get the sum from any class not independent if any specific instance or object. Hence, for generic methods which only need arguments to work can be made static to keep it all DRY.

    0 讨论(0)
  • 2020-11-22 05:52

    The static modifier when placed in front of a function implies that only one copy of that function exists. If the static modifier is not placed in front of the function then with every object or instance of that class a new copy of that function is made. :) Same is the case with variables.

    0 讨论(0)
  • 2020-11-22 05:54

    The basic paradigm in Java is that you write classes, and that those classes are instantiated. Instantiated objects (an instance of a class) have attributes associated with them (member variables) that affect their behavior; when the instance has its method executed it will refer to these variables.

    However, all objects of a particular type might have behavior that is not dependent at all on member variables; these methods are best made static. By being static, no instance of the class is required to run the method.

    You can do this to execute a static method:

    MyClass.staticMethod();  // Simply refers to the class's static code
    

    But to execute a non-static method, you must do this:

    MyClass obj = new MyClass();//Create an instance
    obj.nonstaticMethod();  // Refer to the instance's class's code
    

    On a deeper level the compiler, when it puts a class together, collects pointers to methods and attaches them to the class. When those methods are executed it follows the pointers and executes the code at the far end. If a class is instantiated, the created object contains a pointer to the "virtual method table", which points to the methods to be called for that particular class in the inheritance hierarchy. However, if the method is static, no "virtual method table" is needed: all calls to that method go to the exact same place in memory to execute the exact same code. For that reason, in high-performance systems it's better to use a static method if you are not reliant on instance variables.

    0 讨论(0)
  • 2020-11-22 05:57

    If state of a method is not supposed to be changed or its not going to use any instance variables.

    You want to call method without instance.

    If it only works on arguments provided to it.

    Utility functions are good instance of static methods. i.e math.pow(), this function is not going to change the state for different values. So it is static.

    0 讨论(0)
  • 2020-11-22 06:09

    Methods and variables that are not declared as static are known as instance methods and instance variables. To refer to instance methods and variables, you must instantiate the class first means you should create an object of that class first.For static you don't need to instantiate the class u can access the methods and variables with the class name using period sign which is in (.)

    for example:

    Person.staticMethod();           //accessing static method.
    

    for non-static method you must instantiate the class.

    Person person1 = new Person();   //instantiating
    person1.nonStaticMethod();       //accessing non-static method.
    
    0 讨论(0)
提交回复
热议问题