JAVA类与对象

1.以下代码无法通过编译,哪里出错了?

原因:构造函数Foo()未定义,如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

截图如下:

2.请依据代码的输出结果,自行总结Java字段初始化的规律

 输出结果为:100   300

总结Java字段初始化的规律:Java字段初始化规律系统会按顺序对Java字段进行初始化,如果有好几个方法都对同一个变量进行了初始化。Java会将最后一次的初始化结果赋给该变量。

3.动手动脑:当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行,请自行编写代码验证以上结论

class GrandFather

{

static

{

System.out.println("GrandFather的静态初始化块");

}

}

class Father extends GrandFather

{

static

{

System.out.println("Father的静态初始化块");

}

}

class Son extends Father

{

static

{

System.out.println("Son的静态初始化块");

}

}

public class Hello

{

public static void main(String[] args) 

{

new Son();

}

}

4.动手动脑:请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”

    静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。

 

 5.静态方法只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或者方法)

请编写代码验证你的想法

public class Test {

public static void main(String[] args){

Foo f;

f=new Foo();

f.display();

}

}

class Foo{

public static void display(){

System.out.println("调用成功!");

}

}

 

6.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。 

class Num{

private static int n;

public Num()

{

n++;

}

public static int get()

{

return n;

}

}

public class Number {

public static void main(String[] args){

Num n1=new Num();

Num n2=new Num();

 System.out.println("创建对象的个数为:"+Num.get( ));

}

}

 

原文地址:https://www.cnblogs.com/qianxia/p/4887506.html