Java:使用不同的构造函数
这是我第一天(独自)学习java,所以我需要一些帮助。 这是我的代码:Java:使用不同的构造函数,java,constructor,Java,Constructor,这是我第一天(独自)学习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 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).
有什么建议吗?提前感谢 您可以公开MyClass:
public static class MyClass{
...
}
您可以公开MyClass:
public static class MyClass{
...
}
您的问题是,您在
java\u main
classMyClass
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;
}
}
您使用的ussue是因为您必须以创建内部类实例的方式创建外部类的第一个实例
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适用于不是对象一部分的代码部分,它仅由其路径包围(方法必须在类中)
试着找一个指导你的教程 您的问题是,您在
java\u main
classMyClass
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;
}
}
您使用的ussue是因为您必须以创建内部类实例的方式创建外部类的第一个实例
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适用于不是对象一部分的代码部分,它仅由其路径包围(方法必须在类中)
试着找一个指导你的教程 它起作用了
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) {
// 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 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;
}
}
}试试这个
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
或者将MyClass从java_主类中取出。并从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;
}
}
希望这对你或其他人有帮助
干杯 您遇到的问题是无法从静态上下文(java_main类中的主菜单)引用非静态变量(MyClass的实例) 要么你像这样改变你的MyClass
public static class Myclass
或者将MyClass从java_主类中取出。并从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;
}
}
希望这对你或其他人有帮助
干杯 主方法必须在类中。编辑:遗漏了代码的一部分,我一定是向下滚动太远了。一个Java文件中只能有一个公共类(必须与文件本身同名),即使在一个文件中放两个类,它们也不应该嵌套。是的,您可以在另一个类中拥有一个匿名类,但这不是您在这里要做的。请遵循。您(意外地?)在此文件中声明了两个类。对于绝对初学者,尝试每个文件使用一个类。你应该使用
MyClass
作为static
@a_用户我错过了你的部分代码,向下滚动太远,更新了我的响应。但是,正如Thilo所建议的:从头开始。您的主方法必须在类中。编辑:遗漏了代码的一部分,我一定是向下滚动太远了。一个Java文件中只能有一个公共类(必须与文件本身同名),即使在一个文件中放两个类,它们也不应该嵌套。是的,您可以在另一个类中拥有一个匿名类,但这不是您在这里要做的。请遵循。您(意外地?)在此文件中声明了两个类。对于绝对初学者,尝试每个文件使用一个类。你应该使用MyClass
作为static
@a_用户我错过了你的部分代码,向下滚动太远,更新了我的响应。但是,正如Thilo所建议的:从一开始就开始。你应该这样做,因为你在静态方法中使用它,所以它不应该是java_main的某个具体实例的内部,我认为,应该在回答中提到。解决了这个问题,但这并不是一个很好的答案,可以帮助初学者理解到底发生了什么。你应该让静态的还是公共的?你应该这样做,因为你在静态方法中使用它,所以它不应该是java_main的某个具体实例的内部,我想,应该在答案中提到。解决了这个问题,但这并不是一个很好的答案,可以帮助初学者理解到底发生了什么。你应该让静态的还是公共的?你不应该只写代码,请解释一下,为什么没有外部类的实例就不可能创建非静态的内部类的实例。@DmitryGinzburg:+1。但是在这种情况下,根本不需要去内部类。OP很可能是偶然发现的。这里至少有5个答案可以解释;)您不应该只编写代码,请解释OP,为什么在没有外部类实例的情况下不可能创建非静态内部类的实例。@DmitryGinzburg:+1。但是在这种情况下,根本不需要去内部类。OP很可能是偶然发现的。这里至少有5个答案可以解释;)