精华内容
下载资源
问答
  • 静态方法需要有对象,可以使用类名调用。 静态方法中允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是可用的。 一般情况下,主方法是静态方法,所以可...

    Public static void printData(){}
    表明此类方法为类方法(静态方法)
    静态方法不需要有对象,可以使用类名调用。
    静态方法中不允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是不可用的。
    一般情况下,主方法是静态方法,所以可调用静态方法,主方法为静态方法是因为它是整个软件系统的入口,而进入入口时系统中没有任何对象,只能使用类调用。

    package TomText;
    //使用do-while语句,完成简单的数据求和。
    public class TomText_25 {
        public static void main(String args[]){
            int n = 0;
            int sum = 0;
            do{
            sum += n;
            n++;
            }while(n <= 10);
            System.out.println("1~10的数据和为:" + sum);
            }
    
    }
    
    展开全文
  • 其变量可以通过类名访问类名 . 变量名。与通过访问对象的编译时类型访问类变量为等价的。   Public static void printData(){} 表明此类方法为类方法(静态方法)   静态方法中允许访问类的非...

     

    面向对象高级:   修饰符:

    static:可修饰变量(属性);②可修饰方法;③可修饰代码块。

    Static int data语句说明data为类变量,为一个类的共享变量,属于整个类。

    Int data为实例变量。

    例:

    static int data;

    m1.data=0;

    m1.data++的结果为1,此时m2.data的结果也为1

    Static定义的是一块为整个类共有的一块存储区域,其发生变化时访问到的数据都时经过变化的。

    其变量可以通过类名去访问:类名.变量名。与通过访问对象的编译时类型访问类变量为等价的。

     

    Public static void printData(){}

    表明此类方法为类方法(静态方法)

     

    静态方法中不允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是不可用的。

     

    一般情况下,主方法是静态方法,所以可调用静态方法,主方法为静态方法是因为它是整个软件系统的入口,而进入入口时系统中没有任何对象,只能使用类调用。

    转载于:https://www.cnblogs.com/borter/p/10743978.html

    展开全文
  • 静态变量或者函数,不止可以类名直接访问。因为静态成员和任何对象绑定,是属于整个类的,实际上也可以...2.当调用模板函数时,使用类名调用静态变量就合适了。 template<typename T> void foo(T t) {

    静态变量或者函数,不止可以用类名直接访问。因为静态成员不和任何对象绑定,是属于整个类的,实际上也可以说是属于所有对象的,所以也可以通过对象或者对象指针进行访问。两种访问方式各有各的优点

    class CTest
    {
    public:
     static int a;
    }
    
    

    1.当还没有来得及声明对象时,可以直接用类名调用

    CTest::a = 10;

    2.当调用模板函数时,使用类名调用静态变量就不合适了。

    template<typename T>
    int foo(T t)
    {
        return t.a;
    }
    
    int main()
    {
        CTest t1;
        CTest t2;
    
        t1.a = 10;
        t2.a = 20;
    
        int m = foo(t1); //因为是静态变量,所以m == 20;
        
        return 0;
    }
    

    展开全文
  •  静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例 //----...

    静态方法和实例方法的区别主要体现在两个方面: 

    在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 

    静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

    下面几个例子展示了这一区别。

    1、调用静态方法示例 

    //-----------hasStaticMethod.java-----------------
    public class hasStaticMethod{
    //定义一个静态方法
    public static void callMe(){
      System.out.println("This is a static method.");
    }
    }
    

    下面这个程序使用两种形式来调用静态方法。

    //-----------invokeStaticMethod.java-----------------
    public class invokeStaticMethod{
      public static void main(String args[]){
      hasStaticMethod.callMe(); //不创建对象,直接调用静态方法  
      hasStaticMethod oa = new hasStaticMethod();  //创建一个对象
      oa.callMe();   //利用对象来调用静态方法
    }
    } 
    

    程序两次调用静态方法,都是允许的,程序的输出如下:
    This is a static method.This is a static method.  

    允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
    还有一个很典型的代表就是数组的处理工具Arrays

    2、静态方法访问成员变量示例

    //-----------accessMember.java-----------------
    class accessMember{
    private static int sa; //定义一个静态成员变量
    private int ia; //定义一个实例成员变量
    //下面定义一个静态方法
    static void statMethod(){
      int i = 0;  //正确,可以有自己的局部变量sa = 10;  
      //正确,静态方法可以使用静态变量
      otherStat(); 
      //正确,可以调用静态方法
      ia = 20;  //错误,不能使用实例变量
      insMethod(); //错误,不能调用实例方法
    }
    static void otherStat(){} 
    //下面定义一个实例方法 
    void insMethod(){
      int i = 0;  //正确,可以有自己的局部变量
      sa = 15;  //正确,可以使用静态变量
      ia = 30;  //正确,可以使用实例变量
      statMethod();  //正确,可以调用静态方法
    }
    } 
    
    
    

    本例其实可以概括成一句话:

    静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。 

    main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。


    3.实例对象可以访问静态成员(静态方法和静态成员变量)
    【和实例成员(实例成员变量和实例方法)--毋庸置疑的】

    既然类都能调用,那当然实例也可以调用。就拿下面这个例子,我定义一个人类,它有一个方法say(),代表所有人都能说话,测试的时候可以直接通过类名调用。然后我创建两个人一个男人,一个女人,理所当然他们也能说话,也就是通过实例去调用方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public  class  Person{
         public  static  void  say(){
             System.out.println( "hello" );
         }
         public  static  void  main(String[] args) {
             Person.say();
             Person man=   new  Person();
             man.say();
             Person woman=   new  Person();
             woman.say();
         }
    }
    //运行结果
    hello
    hello
    hello

    展开全文
  • 静态函数  c++   xxdd11223 2016年06月05日提问 关注 4 关注 收藏 0 收藏,1.7k 浏览 ...如题,看到一篇文章,说只要非静态成员函数中没有使用非静态成员变量,就可以通过类名和域运算符来直
  • 使用实例调用静态方法时, 调用的静态方法是声明类型的静态方法, 与实例的实际类型无关. 当父类和子类有同名的静态方法时, 声明父类变量引用子类实例, 调用该静态方法时候调用的是父类的静态方法, 而非子类的静态方法...
  • 有时 类名.方法运行错误 简单说来,静态方法可以不用创建对象就调用,非静态方法必须有了对象的实例才能调用.因此想在静态方法中引用非静态方法是可能的,因为它究竟引用的是哪个对象的非静态方法呢?编译器可能给...
  • 类的静态变量和 静态方法就可以直接用类名进行访问
  • 正规的C++语言标准目前(截止到C++14)应该还支持这种调用方法。目前微软似乎在它的VC++中推行一种叫做C++/CLI的标准,有可能会支持这种调用,如果一定要用这种调用方法的话,还应该用VS2013尝试编译运行一下。 ...
  • java中带有static的方法采用类名的方式访问的问题(建议这样访问) package com.company.test02; /* * 什么时候程序会出现空指针异常? * 空引用访问实例相关的数据,因为实例相关的数据就是对象相关的数据,这些...
  • classmethod类方法,直接可以类名调用
  • #include<iostream> using namespace std; class A { public: void foo() { printf("1\n"); } virtual void fun() { printf("2\n"); } }; class B : public A { pub...
  • 类名直接访问类变量

    千次阅读 2011-07-22 17:27:19
    class Hh{static String jj;}class PP{Hh.jj="呵呵呵"}
  • class A { public: int a; A() { a = 1; } public: void gp() { cout; } }; class B : public A { public: void bc() { A::gp(); } }; int main() { B b;... 但是确实可以这么写 也可以省略。 为啥?
  • 为什么可以通过类名调用静态方法?

    千次阅读 2018-05-03 21:00:21
    JVM加载类: 所有的类都是在对其第一次使用时,动态加载到JVM中的。当程序创建第一个类的静态成员的引用时,就会加载这个类,进而可以得到该类的类型信息,而类型信息可以在...为什么通过类名可以调用静态方法? ...
  • GlobalVar.is_init是类变量的访问方法,因此第二种方法其实是在修改类变量、访问类变量,因此达到了原来代码的预期。因此即使get_init_status()方法内也是访问的对象变量,结果仍然是True,因为类变量对于所有的类的...
  • 在C#中怎么通过类名访问类的属性

    千次阅读 2007-02-09 10:41:00
    如果我有一个拥有FirstName的属性的类Perso,我能通过如下方式访问:Person.FirstName = "Mike";能通过下面的方式来访问吗Person["FirstName"]="Mike";通过反射类来实现,但是这种方法性能比较低。publci class ...
  • java 类名重复 Claes Redestad已在core-libs-dev邮件列表上发布了消息“ RRF:8187123 :(反映)Class#getCanonicalName和Class#getSimpleName是性能问题的一部分 ”,他在邮件列表中要求审查建议的更改“以启用...
  • 类名.class 类名.this

    2019-07-18 17:54:06
    当在一个类的内部类中,如果需要访问外部类的方法或者成员域的时候,如果使用 this.成员域(与 内部类.this.成员域 没有分别) 调用的显然是内部类的域 , 如果我们想要访问外部类的域的时候,就要必须使用 外部类....
  • Syntax error, insert &amp;quot;VariableDeclarators&amp;quot; to complete LocalVariableDeclaration![在这里插入图片描述]...
  • ![图片说明]... main.cpp ``` #include .../* run this program using the console pauser or add your own getch, system("pause") or input loop */ ...```
  • 类名.this的使用

    2017-02-21 19:14:48
    当在一个类的内部类中,如果需要访问外部类的方法或者属性的时候,必须使用外部类.this.属性/方法。而如果内部类自己使用自己的属性/方法。只需要this.属性/方法。
  • //匿名内部类中使用类名.this.属性名,调用外部类属性 Thread . sleep ( WxMessageInMemoryDuplicateChecker . this . clearPeriod ) ; Long now = System . currentTimeMillis ( ) ; for ( Map . Entry ...
  • 因为该类的静态方法是程序启动时自动放在内存中了的,是属于程序的公共内存(但只能访问),而类名在这里你可以理解为命名空间。 先通俗的分析下,我们把类看作是一个房子。房子里面有家具,桌椅板凳之类的,房子里面...
  • 类名.class 类名.this 详解

    万次阅读 多人点赞 2016-09-28 20:33:56
     我们知道在java中,一个类在被加载的时候虚拟机就会自动的生成一个这个类的一个Class类型的“类对象”,每个类都对应着一个这样的类对象,通过这个Class类型的类对象,我们就能够使用“内省与反射”机制,访问一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 353,063
精华内容 141,225
关键字:

不可以使用类名访问的是