[英]Java: Using different constructors
这是我自己学习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).
有什么建议么? 提前致谢!!!
您遇到的问题是您已将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适用于不是对象一部分的代码部分,它仅由其路径包围(方法必须在类中)。
尝试找到可以指导您的教程。
您可以将MyClass公开:
public static class MyClass{
...
}
有用 ...
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;
}
}
将您的代码更改为此:
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;
}
}
试试这个
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设为静态内部类即可使用,但这取决于用例,
公共类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_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;
}
}
希望这对您或其他人有帮助。
干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.