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()
	{
		
	}
	}
	

  如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

就像上面的代码中。

执行 类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

执行类的构造函数。

 

posted @ 2022-10-22 22:52  南北啊  阅读(28)  评论(0)    收藏  举报
1 2 3
4