java - 实例方法可以直接访问实例方法。这是什么意思?

标签 java

浏览完 Java 文档后,我了解到用“static”关键字声明的字段是类变量(或静态字段),类似地,在方法声明期间使用“static”时,是静态方法(或类方法)。类变量和类方法由类名本身引用。

阅读thisthis然而,topics 无法理解 Java 文档中的以下句子。

这句话是什么意思...... 并非所有实例和类变量及方法的组合都是允许的:

  1. 实例方法可以访问实例变量和实例方法 直接。
  2. 实例方法可以访问类变量和类方法 直接。
  3. 类方法可以直接访问类变量和类方法。

Java 文档清楚地解释了类变量和类方法,但以上三点让我感到困惑。

最佳答案

Example Execution

1.Instance methods can access instance variables and instance methods directly.

一些信息:

  • 实例方法是需要其类的对象是的方法 在调用之前创建。要调用实例方法,我们必须 创建一个在其中定义它的类的对象。

  • 实例变量在类中声明,但在方法、构造函数之外 或任何 block 。

    class Example1 {
        int a = 100; // instance variable
    
        public void printData() { // this an instance method called using an object of class Example1
            getData(); // accessing another instance method directly without any object
        }
    
        public void getData() {
    
            System.out.println(a); // accessing instance variable 'a' directly without any object
        }
    
    }
    
    public class InstanceDemo {
    
    public static void main(String[] args) {
        Example1 obj1 = new Example1();
        obj1.printData(); // will print 100
    }
    }
    

2.Instance methods can access class variables and class methods directly.

  • 类变量也称为静态变量,用 static 声明 关键字位于类中,但位于方法、构造函数或 block 之外。

        class Example2 {
        static int a = 20; // 'static' / class variable
    
        public void printData() { // instance method
            setData(); // accessing class method directly
            System.out.println(a); // accessing class variable directly
        }
    
        public static void setData() { // class method 'static'
    
            a = 200; // setting value of class variable 'a'
        }
    
        }
    
    
    public class InstanceDemo {
    
    public static void main(String[] args) {
    
        Example2 obj2 = new Example2();
        obj2.printData(); // will print 200
    }   
    }
    

3.Class methods can access class variables and class methods directly.

  • 静态方法是 Java 中无需创建实例即可调用的方法。 类的对象。它们通过类名本身或引用来引用 该类的对象。
  • 内存分配:它们存储在堆的永久代空间中,如下所示 它们与它们所在的类相关联,而不是与它们的对象相关联 那个类。但它们的局部变量和传递给它们的参数是 存储在堆栈中。因为他们属于类(class),所以他们可以被称为 而不创建类的对象。

    class Example3 {
        static int a = 300;
    
        public static void printData() {
            getData(); // accessing class method
        }
    
        public static void getData() {
    
            System.out.println(a); // accessing class variable 'a'
        }
    
    }
    
    public class InstanceDemo {
    
    public static void main(String[] args) {
    
        //calling class method : class method are called using class name. 
        Example3.printData(); // will print 300
    }
    
    }
    

关于java - 实例方法可以直接访问实例方法。这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978434/

相关文章:

java - 无法从静态上下文引用非静态方法count(int)

JavaFX ScrollPane 不符合其约束

java - Maven 拉取旧版本的传递依赖

java - iText 7 (Java) 当大表扩展到下一页时,它不会绘制底部边框

java - 防止 WSDL 生成包含某些字段

java - Java新内存模型中的happens-before是否也适用于声明为 volatile 的对象的成员?

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - Libgdx + 旋转 Sprite 点到触摸位置

java - 为 Java 集合实现 AbstractTableModel

java - 我如何编辑我的代码来计算和显示每个名字在我的列表中出现的次数