黑马程序员技术交流社区
标题:
求帮忙
[打印本页]
作者:
呆呆呆
时间:
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 修饰,那么这个成员函数就称为静态成员函数(或静态方法、类方法等)
可以说静态成员函数是成员函数的一种特殊存在形式;
静态成员函数与成员函数不同之处在于:
静态成员函数在类加载时,同时加载,可以直接通过类名进行调用
而成员函数在创建对象时才会被加载,通过对象进行调用
成员变量和静态变量的关系和函数类似,下面通过例子说明:
例子如下:
class Example{
//a一个成员变量
int a=88;
//name是一个静态变量
static String name="luck";
//exam_1是成员函数
public void exam_1(){
System.out.println(a);
}
//exam_2是静态函数,注意:静态函数不能调用非静态的变量或函数
public static void exam_2(){
System.out.println(name);
}
}
public class Demo {
public static void main(String[] args){
Example.exam_2(); //通过类名直接调用静态函数
Example em=new Example();
em.exam_1(); //成员函数要创建对象后,通过对象调用
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2