标签:
<span style="color:#000000;">public Constructor02(){} public Constructor02(int i){} public Constructor02(int i,int j){} public Constructor02(float i){}</span>
<span style="color:#000000;">package jin.feng1; class Constructor02{ public Constructor02(){} public Constructor02(int i){} public Constructor02(int i,int j){} public Constructor02(float i){} //void print(int i){ System.out.println("int");} void print(float i){ System.out.println("float");} //void print(char i){ System.out.println("char");} void print(short i){ System.out.println("short");} void print(double i){ System.out.println("double");} } public class Constructor01 { public static void main(String[] args) { Constructor02 constructor02=new Constructor02(); char c='a'; int a=1; float b=9; double d=9; constructor02.print(c); } } //output float </span>
void f(){} int f(){return 1;} 调用的时候f(),则编译器不知道该调用哪个方法。所以用返回值区分是行不通的。
package jin.feng1; class Banana{ void print(){} void peel(int i){ print();//直接调用,编译器自动转变为this.print() } } public class This01 { public static void main(String[] args) { Banana a=new Banana(); Banana b=new Banana(); a.peel(1);//编译自动添加this 转变为Banana.peel(a,1) b.peel(2); } }
<span style="color:#000000;BACKGROUND-COLOR: #ffffff">public Constructor02(){} public Constructor02(int i){this();} //产生符合此参数列表的某个构造器的明确调用 public Constructor02(int i,int j){this(i);} public Constructor02(float i){}</span>
<span style="color:#000000;">class Banana{ int j; static int i; static void count(){ Banana b9=new Banana(); b9.i=9; b9.j=8; //通过创建对象访问其非static类型的 b9.print(); //通过创建对象访问其非static类型的 //j++; 不可直接访问 //print(); i++;//直接访问static变量 } void print(){ //非static方法直接访问static成员。 System.out.println("i:"+i); count(); } Banana increment(){ i++; return this; } } </span>
静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的 那在什么时候需要呢?
一般是为了方便调用才会声明为static方法:例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。
注意使用:
静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联!这个需要去理解,因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
标签:
原文地址:http://blog.csdn.net/xu5025/article/details/42291227