黑马程序员技术交流社区

标题: 调用静态方法 [打印本页]

作者: 呆呆呆    时间: 2013-11-22 13:33
标题: 调用静态方法
类名,静态方法
可以用  本类对象.静态方法 调用吗?
还有其他的调用方法吗?
不是很清楚
作者: 姚宏    时间: 2013-11-22 14:02
类中定义的静态方法可以用 类名.静态方法名直接调用  或者是用此类声明的对象调用
作者: 终结者    时间: 2013-11-22 14:02
调用静态方法只是比平常的方法调用多了一个类名.静态方法名
作者: 凌风    时间: 2013-11-22 14:05
基本上可以分为三种情况:
1.如果另一个类中的那个方法是私有的话(private),就不能直接调用到。
2.如果是静态的(static)话,直接用类名可以调用到,类.方法()。
3.如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象)来调用。
通过代码示例:

  1. class A{
  2. public static void a(){}
  3. public void b(){}
  4. private void C(){}  //此方法为private  其它类不可以调用
  5. }

  6. public class B{
  7. public static void main(String[] args){
  8. A.a(); // 静态方法 直接用 类名.方法名
  9. new A().b(); //非静态方法,先newA类的对象 再进行调用 。
  10. }
  11. }
复制代码

作者: 简★零度    时间: 2013-11-22 14:12
static
        (1)是一个关键字,可以修饰成员变量和成员方法
        (2)特点:
                A:随着类的加载而加载。
                B:优先于对象存在。
                C:被所有对象共享。
                D:可以被类名调用。
        (3)静态方法和非静态方法的使用
                A:静态方法
                        a:静态成员变量
                        b:静态成员方法

                B:非静态方法
                        a:非静态成员变量
                        b:非静态成员方法
                        c:静态成员变量
                        d:静态成员方法
        (4)静态变量和非静态变量的区别?
                A:生命周期
                        静态随着类的加载而加载,随着类的消失而消失。
                        非静态随着对象的创建而存在,随着对象的消失而消失。

                B:存储位置
                        静态是存储在方法区中的静态区。(方法区:方法区,静态区,代码区,常量池)
                        非静态是存在堆中。

                C:调用方式
                        静态可以类名调用,也可以对象名调用。
                        非静态只能对象名调用。

                D:理解不同
                        静态修饰的内容是被所有对象共享的。
                        非静态的内容是每个对象特有的。
        (5)什么时候使用静态?
                A:如果某个成员被所有对象共享。
                        举例:水杯和饮水机,姓名和班级。
                B:工具类的成员一般都是静态修饰。
作者: che201311    时间: 2013-11-22 16:13
本帖最后由 che201311 于 2013-11-22 16:15 编辑


如果另一个类中的那个方法是私有的话(private),就不能直接调用到。
如果是静态的(static)话,直接用类名可以调用到,类.方法()。
如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象)来调用。
通过代码示例:

class A{
public static void a(){}
public void b(){}
private void C(){}  //此方法为private  其它类不可以调用
}

public class B{
public static void main(String[] args){
A.a(); // 静态方法 直接用 类名.方法名
new A().b(); //非静态方法,先newA类的对象 再进行调用 。
}
}


作者: lichao    时间: 2013-11-22 17:28
可以 对象.方法名 也可以类名.方法名 这都是可以的
作者: 瓶中人    时间: 2013-11-23 11:05
其实这种问题,越是浮云,自己试一下不就知道吗?




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