java静态方法和实例方法的区别

静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别 
调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名;通常使用类名。
static方法只能处理static域或静态方法。实例方法可以访问实例域, 静态域或静态方法, 记住都行。
class StaticTest {
    static int a = 4;
    static int b = 9;
    static void call() {
        /*下一句是错误的,因为静态的不能调用实例的方法。*/
        //callins();
        System.out.println("a = " + a+"马克-to-win"+Test.c);//静态方法可以访问静态属性
    }
    void callins() {
        call();
        System.out.println("a = " + a+"实例马克-to-win"+Test.c);//静态方法可以访问静态属性
    }
}
public class Test {
    static int c = 43;
    public static void main(String args[]) {
/*刚运行到这一步时,debug观察,StaticTest.a的值就等于4,Test.c的值就等于43,
 说明系统在我们的程序一开始时,就会给所有的类变量赋值。如果是对象参考, 就是null,
 见photoshop的例子*/    
        StaticTest se =new StaticTest();
        System.out.println("开始观察StaticTest.a和Test.c");
        se.b=5;
        StaticTest.call();//静态方法用类名直接调用
        se.call();
        se.callins();
        System.out.println("b = " + StaticTest.b);//静态属性用类名直接调用
    }
}


assignment: make a method which can print "hello world!".

package com;
class Car{
    static int count = 0;
    Car() {
          count++;//实例方法可以访问静态变量
    }
    static int getCount(){
        return count;
    }
    int inscal()
    {
        return getCount();//实例方法可以调用静态方法。
    }
}

public class Test{
     public static void main(String[] args){
        System.out.println(Car.getCount());//it's ok
        Car c = new Car();
        System.out.println(c.getCount());//实例可以调用静态方法。马克-to-win
        System.out.println(Car.getCount());

        Car c1 = new Car();
        System.out.println(Car.getCount());
        System.out.println(c1.inscal());
}
}

更多内容请见原文,原文转载自:https://blog.csdn.net/qq_44639795/article/details/103128670

posted @ 2021-01-11 21:39  师徒行者  阅读(310)  评论(0编辑  收藏  举报