类与对象
1、以下代码为何无法通过编译?哪儿出错了?
截图:
错误原因:构造方法与类名相同,系统已经由一个默认构造函数,给他设置一个形参即可。
2、使用上页幻灯片中定义的类,以下代码输出结果是什么?
请依据代码的输出结果,自行总结Java字段初始化的规律。
运行结果:
规律:初始化有两块:静态初始化和实力初始化。执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。执行类的构造函数。
3、当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
请自行编写示例代码验证以上结论。
代码:package hhhh;
class StaticDemo{
static int x;//静态变量x
int y;//实例变量 y
static public int getX()
{
return x;
}
static public void setX(int newX)
{
x=newX;
}
public int getY()
{
return y;
}
public void setY(int newY)
{
y=newY;
}
}
public class ShowDemo {
public static void main(String[] args)
{
// TODO Auto-generated method stub
StaticDemo pro=new StaticDemo();
System.out.println("静态变量x="+StaticDemo.getX());
System.out.println("实例变量y="+pro.getY());//false
StaticDemo a=new StaticDemo();
StaticDemo b=new StaticDemo();
a.setX(1);
a.setY(2);
b.setX(3);
b.setY(4);
System.out.println("静态变量a.x="+a.getX());
System.out.println("实例变量a.y="+a.getY());
System.out.println("静态变量b.x="+b.getX());
System.out.println("静态变量b.x="+b.getY());
}
}