A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呆呆呆 中级黑马   /  2013-11-22 15:17  /  1104 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师讲多态中,成员函数、成员变量、静态成员函数各自的特点给我讲蒙了,麻烦细致的讲一下。。

评分

参与人数 1黑马币 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
记住一句话:
只有非静态的成员函数,编译看左,运行看右。
其余的所有东西,编译运行都看左

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

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

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

其余的各种情况,都只看左边就行了
回复 使用道具 举报
一个类有两部分:类的声明和类体;

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

成员函数前面如果有 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. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
FFF + 2 有例子,有解释。活动期间额外技术分+1.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马