java 类与对象
1.在定义变量时,java要求必须显示初始化变量。
比如以下代码无法通过编译:
public class Twst{
public static void main(String[] wrgs)
{
int value;
System.out.println(value);
}
}
public class Twst{
public static void main(String[] wrgs)
{
int value=100;
System.out.println(value);
}
}
这样写才能运行。
下面这个 也是不能运行,因为对象变量如果不引用一个真实的对象,则必须声明为null;
public class Test{
public static void main(String[] args)
{
MyClass obj ;
System.out.println(obj.toString());
}
}
下面这个才能运行:
public class Test{
public static void main(String[] args)
{
MyClass obj =null ;
System.out.println(obj.toString());
}
}
public class ert {
public static void main(String[] args )
{
Foo obj1=new Foo();
}
}
class Foo{
int value;
public Foo(int initvalue)
{
value =initvalue;
}
}
上面这些代码出什么问题?哪出错了?
因为是如果类提供了一个自定义的构造方法,将导致系统不在提供默认的构造方法。
package wer;
public class ert {
public static void main(String[] args )
{
int a=0;
Foo obj1=new Foo (a);
}
}
class Foo{
int value;
public Foo( int initvalue)
{
value =initvalue;
}
}
这样写就对了。
public class ert {
public static void main(String[] args )
{
InitiazeBlockClass obj=new InitiazeBlockClass();
System.out.println(obj.field);
obj=new InitiazeBlockClass(300);
System.out.println(obj.field);
}
}
class InitiazeBlockClass{
{
field=200;
}
public int field=100;
public InitiazeBlockClass( int value)
{
value=this.field;
}
public InitiazeBlockClass()
{
}
}
如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?
就像上面的代码中。
执行 类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。
执行类的构造函数。

浙公网安备 33010602011771号