- <p>/*对于一些0基础的学员来说,关于函数的多种调用形式,往往会迷糊,可能会混淆,今日在下将自己的一些总结发出来供大家参考,其中亦包括各种情况下括号内的含义的备注,希望对大家有所帮助,我也是个0基础的家伙,不对的地方希望大家指出。谢谢,么么哒*/</p><p>//此文本为实验静态与非静态之间的调用而创建
- /*
- 1.同一个类中,静态函数不可以调用非静态的,不同类中则可以调用,调用方式:函数名()
- 2.不同类之间的函数调用要先new一个被调用类的对象才可以调用
- 3.不同类间函数的调用,静态函数多了一种调用方式,类名.函数名称,直接调用,无需建立对象。
- */
- class Zhu
- {
- public static void main(String[] args)
- {
- print1(8);//括号内是用于给函数内的局部变量赋值。即int 类型的a
- Print2 p2=new Print2(20,"构造函数");
- p2.print2(6);//括号内,给局部变量赋值,
- Print2.print3();
- }
- public static void print1(int a)//纠错:加上static
- {
- a=a;
- System.out.println("静态"+"a="+a);//错误提示:无法从静态上下文中引用非静态方法
- //原因:静态函数在类建立的时候就已经存在在方法区的静态区,
- 此时还没有生成其他非静态函数,所以静态无法引用非静态方法。
- }
- }
- class Print2
- {
- private int c;
- private String name;
- Print2(int c,String name)
- {
- this.c=c;
- this.name=name;//编译报错:找不到符号,符号:变量c··········
- } //原因:在类中没有定义变量,构造函数中定义的是没有意义的,不可以被使用
-
- public void print2(int b)
- {
- b=b;//b前不用加this,只在构造函数中才用到,用于区分同名变量。
- System.out.println("不同类"+"b="+b+"c="+c);
- System.out.println("name="+this.name+ "c="+this.c);
- }
- public static void print3()
- {
- System.out.println("静态类名调用");
- }
- }
- </p>
复制代码
|
|