小弟刚接触JAVA,对JAVA的语法格式不太熟悉(我看的书上没有讲到),请教各位大虾一下,不盛感激!一个Test.java文件:public class Test {
public static void main(String[] args){
DataOnly dataOnly = new DataOnly();
}
}
class DataOnly {
private int i;
}DataOnly在Test外定义,编译可以执行,我想知道是否可以像下面一样:
public class Test {
public static void main(String[] args){
DataOnly dataOnly = new DataOnly();
}
class DataOnly {
private int i;
}
}不可以把所有的类都定义在Test中吗??还有在main中可以定义类吗??谢谢了
public static void main(String[] args){
DataOnly dataOnly = new DataOnly();
}
}
class DataOnly {
private int i;
}DataOnly在Test外定义,编译可以执行,我想知道是否可以像下面一样:
public class Test {
public static void main(String[] args){
DataOnly dataOnly = new DataOnly();
}
class DataOnly {
private int i;
}
}不可以把所有的类都定义在Test中吗??还有在main中可以定义类吗??谢谢了
public static void main(String[] args){
Test test = new Test();
DataOnly dataOnly =test.new DataOnly();
}
class DataOnly {
private int i;
}
}
main 是static 不能直接定义DataOnly dataOnly = new DataOnly();可以把所有的类都定义在Test中,但不太好
可以在类中定义类,也可以在一个类的类外定义。
如果说内部类的话,完全可以像"下面这样".至于内部类好不好,要看情况,内部类很大程度上完善了Java多重继承的解决方案,也有他的作用.
但如果说静态方法内实例化一个非静态对像"下面这样"是行不通的.因为静态方法是类的方法,可以不用与一个对象相对应,而非静态方法必须与一个对象相对应.所以不能在没有静态方法用非静态的变量或引用,因为可能还没实例化一个与他们相应的对象.
写在方法里面还可以用匿名类在main方法中。
Test() {
Thread myThread = new MyThread();
Thread xThread = new Thread(){
public void run()
{
System.out.println("匿名内部类,只有临时线程名"+this.getName());
}
};
myThread.start();
xThread.start();
} private class MyThread extends Thread {
public void run()
{
System.out.println("内部类,类名为MyThread,临时线程名"+this.getName());
}
} public static void main(String[] args) {
new Test();
}
}“匿名”是指没有类名
你的代码有误!!如果想在main(一个static方法)中生成内部类的对象,就必须把内部类声明为static!
像这样:
public class Test {
public static void main(String[] args){
DataOnly dataOnly = new DataOnly();
}
static class DataOnly {
private int i;
}
}
否则你就写:
public class Test {
public static void main(String[] args) {
new Test();
} public Test() {
DataOnly dataOnly = new DataOnly();
}
class DataOnly {
private int i;
}
}