我正在学习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();
}
}
答案 0 :(得分:2)
您无法访问静态内容中的非静态内容
当我们默认创建静态内部类时,它将作为外部模板创建为内部模板的关联。所以我们可以将两者一起加载,但只有静态内容可以在静态内部类中。
现在类的对象之间没有连接。但模板之间存在联系。
以下是您的代码我做了一些修改可能对您有所帮助
It works!
It works!
Traceback (most recent call last):
File "/Users/*****/sqlite3_python_cc.py", line 53, in <module>
new_data_entry()
File "/Users/*****/sqlite3_python_cc.py", line 45, in new_data_entry
c.execute("INSERT INTO babyName (name, gender, frequency, year) VALUES (?, ?, ?, ?)", values)
File "/Users/*****/anaconda/lib/python3.6/site-packages/mysql/connector/cursor.py", line 529, in execute
raise errors.ProgrammingError("Cursor is not connected")
mysql.connector.errors.ProgrammingError: Cursor is not connected
答案 1 :(得分:0)
内部静态类与普通类相同:
主要用于两种情况:
非静态内部类:
...内部类可以访问声明类的所有成员,甚至 私人会员。事实上,内部阶级本身据说是一个 班级成员;因此,遵循面向对象的规则 在工程方面,它应该可以访问该类的所有成员。