这是我第一天学习java(我自己),所以我需要一些帮助。 这是我的代码:
public class java_main {
public static void main(String[] args) {
MyClass my = new MyClass(3,4);
MyClass your = new MyClass();
}
public class MyClass {
public int a,b;
public Myclass(int i, int j) {
a = i;
b = j;
}
public Myclass() {
a = 1;
b = 2;
}
}
}
我收到了这个错误:
No enclosing instance of type java_main is accessible. Must qualify the allocation with an enclosing instance of type java_main (e.g. x.new A() where x is an instance of java_main).
有什么建议吗?在此先感谢!!!
答案 0 :(得分:3)
您遇到的问题是您已加入java_main
班MyClass
public class java_main {
public class MyClass {
}
}
删除java_main,以获得有效的结果。
public class MyClass {
public static void main(String[] args) {
MyClass my = new MyClass(3,4);
MyClass your = new MyClass();
}
private final int a,b;
public Myclass() {
this(1,2);
}
public Myclass(int a, int b) {
this.a = a;
this.b = b;
}
}
你有这样的问题,你必须创建外部类的第一个实例,以创建内部的实例。
public static void main(String[] args)
{
java_main outer = new java_main();
Myclass my = outer.new Myclass(3,4);
Myclass your = outer.new Myclass();
}
关键字static适用于不属于对象的代码部分,它仅由其路径包含(方法必须在类中)。
尝试找到可以指导您的教程。
答案 1 :(得分:2)
你可以公开MyClass:
public static class MyClass{
...
}
答案 2 :(得分:0)
它有效......
public class java_main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Myclass my = new Myclass(3,4);
Myclass your = new Myclass();
System.out.println("keval");
}
}
class Myclass
{
public int a,b;
public Myclass(int i, int j)
{
a = i;
b = j;
}
public Myclass()
{
a = 1;
b = 2;
}
}
答案 3 :(得分:0)
将您的代码更改为:
public class java_main {
public static void main(String[] args)
{
Myclass my = new Myclass(3,4);
Myclass your = new Myclass();
}
}
class Myclass
{
public int a,b;
public Myclass(int i, int j)
{
a = i;
b = j;
}
public Myclass()
{
a = 1;
b = 2;
}
}
答案 4 :(得分:0)
试试这个,
public class java_main {
public static void main(String[] args) {
MyClass my = new java_main().new MyClass(3, 4);
MyClass your = new java_main().new MyClass();
}
public class MyClass {
public int a, b;
public MyClass(int i, int j) {
a = i;
b = j;
}
public MyClass() {
a = 1;
b = 2;
}
}
}
更好的方法是将公共类移动到单独的文件中 根据Java命名标准,类名应以大写字母开头。
在这里,我刚刚创建了一个java_main实例,并通过使用该实例为MyClass创建了一个实例。如果您不想将MyClass设置为静态内部类,则这是一种方法。
否则将MyClass作为静态内部类它将起作用,但它取决于用例,
public class java_main {
public static void main(String[] args) {
MyClass my = new java_main().new MyClass(3, 4);
MyClass your = new java_main().new MyClass();
}
public class MyClass {
public int a, b;
public MyClass(int i, int j) {
a = i;
b = j;
}
public MyClass() {
a = 1;
b = 2;
}
}
}
答案 5 :(得分:0)
您遇到的问题是您无法从静态上下文(java_main类中的主菜单)引用非静态变量(MyClass的实例)。
要么像这样改变你的MyClass,
public static class Myclass
或者从java_main类中取出MyClass。并从MyClass中删除公共访问修饰符。因为在同一个文件中不能有两个公共类。
public class java_main {
public static void main(String[] args)
{
Myclass my = new Myclass(3,4);
Myclass your = new Myclass();
}
}
class Myclass
{
public int a,b;
public Myclass(int i, int j)
{
a = i;
b = j;
}
public Myclass()
{
a = 1;
b = 2;
}
}
希望这对您或其他人有帮助。
干杯!