黑马程序员技术交流社区

标题: 求帮忙 [打印本页]

作者: 呆呆呆    时间: 2013-11-22 15:17
标题: 求帮忙
毕老师讲多态中,成员函数、成员变量、静态成员函数各自的特点给我讲蒙了,麻烦细致的讲一下。。
作者: ysunday    时间: 2013-11-22 21:43
记住一句话:
只有非静态的成员函数,编译看左,运行看右。
其余的所有东西,编译运行都看左

稍微解释下
编译看左,就是编译的石斛会看你右边声明的类型是父类还是子类,如果是父类,那么看父类中有没有左边要调用的方法。运行看右就是,运行的时候,右边是什么类型的变量,就调用什么类型的方法

例子
Zi z = new Zi();
Fu f = z.method();//method不是static修饰的啊 !!!!(非静态)

左边声明的类型是Fu类的,那么就看父类中有没有method这个方法,没有的话,报错
右边是Zi类的变量,就调用zi类的方法

其余的各种情况,都只看左边就行了
作者: Uncle.Lee    时间: 2013-11-22 22:47
一个类有两部分:类的声明和类体;

类体又有两部分组成:成员变量和成员函数(也叫成员方法),

成员函数前面如果有 static 修饰,那么这个成员函数就称为静态成员函数(或静态方法、类方法等)

可以说静态成员函数是成员函数的一种特殊存在形式;

静态成员函数与成员函数不同之处在于:
静态成员函数在类加载时,同时加载,可以直接通过类名进行调用
而成员函数在创建对象时才会被加载,通过对象进行调用

成员变量和静态变量的关系和函数类似,下面通过例子说明:

例子如下:
  1. class Example{
  2.        
  3.         //a一个成员变量
  4.         int a=88;
  5.        
  6.         //name是一个静态变量
  7.         static String name="luck";
  8.        
  9.         //exam_1是成员函数
  10.         public void exam_1(){
  11.                 System.out.println(a);
  12.         }
  13.        
  14.         //exam_2是静态函数,注意:静态函数不能调用非静态的变量或函数
  15.         public static void exam_2(){
  16.                 System.out.println(name);
  17.         }
  18. }

  19. public class Demo {
  20.         public static void main(String[] args){
  21.                
  22.                 Example.exam_2();          //通过类名直接调用静态函数
  23.                
  24.                 Example em=new Example();
  25.                 em.exam_1();               //成员函数要创建对象后,通过对象调用
  26.         }

  27. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2