关于静态方法和普通方法的一些想法

关于静态方法与普通方法的一些观点, 网友表述的要比我好, 所有就直接引用。

静态方法可以直接通过类名调用,任何的实例也都可以调用,

因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。

因为实例成员与特定的对象关联!这个需要去理解,想明白其中的道理,不是记忆!!!

因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。

静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的

引用:浅谈Java中static作用


除此之外我简单的表述一下我的一些想法:

静态方法与普通方法的最大区别就是 一个是与类绑定的一个是与实例绑定的。 在我理解看来 普通方法可以看做是静态方法的一个子集。然后在使用静态方法或普通方法时我们应当首先考虑, 这个方法是要操作实例的数据(普通变量)还是实例类的数据(静态变量),搞清楚了方法操作谁(类,实例),便可以进行绑定。

以一个简单的示例做为说明:

public class Person {     private String name;     public String getName() {         Person person = this;         return person.name;     }     public void setName(String name) {         Person person = this;         person.name = name;     }     public static String getName(Person person) {         return person.name;     }     public static void setName(Person person,String name) {         person.name = name;     } } class PersonTest{     public static void  main(String[] args){         Person p = new Person();         p.setName("lisi");//(1)         System.out.println(p.getName());         Person.setName(p,"zhangsan");//(2)         System.out.println(p.getName());     } }

打印结果:

lisi zhangsan

(1)可以看做是(2)的升级版, 实现与(2)完全相似 ,也许将(1)称作(2)的语法糖更好些 ;
而其中两者的的差异就是 Peron实例 所指向的数据如何优雅的拿到。

为了更好的表示将上面的例子稍加改造:

public class Person {     private String name;     public String getName() {         return getName(this);     }     public void setName(String name) {         setName(this,name);     }     public static String getName(Person person) {         return person.name;     }     public static void setName(Person person,String name) {         person.name = name;     } } class PersonTest{     public static void  main(String[] args){         Person p = new Person();         p.setName("lisi");//(1)         System.out.println(p.getName());         Person.setName(p,"zhangsan");//(2)         System.out.println(p.getName());     } }

优雅的关键便是this。

相关内容推荐