Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用内部静态类对象访问外部类变量_Java - Fatal编程技术网

Java 如何使用内部静态类对象访问外部类变量

Java 如何使用内部静态类对象访问外部类变量,java,Java,我正在用java学习内部类。我已经看到,如果内部类是非静态的,那么它可以很容易地访问外部类变量。但若内部类是静态的,那个么我们如何使用静态的类对象访问外部类的变量呢 下面是我的代码,我从内部类访问外部类变量 package org; public class Outerclass { String name = "Europe"; public String getname() { return name; } public void

我正在用java学习内部类。我已经看到,如果内部类是非静态的,那么它可以很容易地访问外部类变量。但若内部类是静态的,那个么我们如何使用静态的类对象访问外部类的变量呢

下面是我的代码,我从内部类访问外部类变量

package org;

public class Outerclass {

     String name = "Europe";

    public String getname() {

        return name;
    }

    public void setname(String name) {

        this.name = name;
        System.out.println(this.name);
    }

    static class innerclass {

        void updatename() {
            Outerclass o = new Outerclass();
            o.setname("USA");
        }

    }

    public static void main(String[] args) {
        Outerclass b = new Outerclass();
        b.name; // why this error here ? "Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration"

        innerclass i = new innerclass();
        i.updatename();

    }

}

无法访问静态内容中的非静态内容

默认情况下,当我们创建静态内部类时,它将作为外部模板创建,作为内部模板的关联。所以我们可以同时加载这两个类,但是只有静态的东西可以在静态的内部类中

现在,类的对象之间没有连接。但这些模板之间有联系

下面是你的代码,我做了一些修改,可能对你有帮助

public class Demo {

     String name = "Europe";

    public String getname() {

        return name;
    }

    public void setname(String name) {

        this.name = name;
        System.out.println(this.name);
    }

    static class innerclass {

        void updatename() {
            Demo o = new Demo();
            o.setname("USA");
        }

    }

    public static void main(String[] args) {
        Demo b = new Demo();
        String a = b.name; // why this error here ? "Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration"

        System.out.println(a);

        innerclass i = new innerclass();
        i.updatename();

    }

}

内部静态类与普通类相同:

  • 可以访问外部类的静态属性/方法
  • 无法直接取消访问outre类的静态/方法,它们将需要一个outerclass实例引用来执行此操作
  • 它不需要创建外部类的实例
它主要用于两种场景:

  • 您正在创建一组具有类似性质/功能的类,并且希望将它们保存在一个“Napespace”下
  • 您希望创建一个私有类,该类对任何人都不可见,但对outter类(私有静态内部类)除外。这样,您就可以创建只对外部类可见的接口实现
非静态内部等级:

  • 它需要创建外部类的实例
  • 它可以访问外部类的方法和属性
:

…内部类可以访问声明类的所有成员,甚至 私人成员。事实上,内部类本身被称为 班级成员;因此,遵循面向对象的规则 工程,它应该可以访问该类的所有成员


如果外部类的变量是静态的怎么办?可以访问静态的东西你能解释一下如何访问它吗?进行此修改静态字符串name=“Europe”;与其向我们展示您是如何尝试做某事(并且失败)的,为什么不解释一下您尝试实现的是什么?如果外部类的变量是静态的呢?您可以访问them@Beri关于
无法直接访问outre类的静态/方法,它们需要一个outerclass实例引用才能访问。
。我认为您可以访问静态方法,而无需外部类的实例。是的,我忘了添加非关键字。谢谢您的评论。