浏览完 Java 文档后,我了解到用“static”关键字声明的字段是类变量(或静态字段),类似地,在方法声明期间使用“static”时,是静态方法(或类方法)。类变量和类方法由类名本身引用。
阅读this和 this然而,topics 无法理解 Java 文档中的以下句子。
这句话是什么意思...... 并非所有实例和类变量及方法的组合都是允许的:
- 实例方法可以访问实例变量和实例方法 直接。
- 实例方法可以访问类变量和类方法 直接。
- 类方法可以直接访问类变量和类方法。
Java 文档清楚地解释了类变量和类方法,但以上三点让我感到困惑。
最佳答案
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/