首页 > 其他 > 详细

动手动脑|课后作业

时间:2018-10-21 18:06:39      阅读:129      评论:0      收藏:0      [点我收藏+]

一、

public class Test{
 public static void main(String[] args){
Foo obj1=new Foo();
}
}
class Foo{
 int value;
 public Foo(int initVaule){
  vaule=initVaule;
}
}

如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法

 同一个类可以有多个构造函数,多个构造函数之间通过参数来区分,这是方法重载的一个实例。

构造函数之间可以相互调用

二、

public class aca {
public int field=100;
{
field=200;
}
public aca(int value) {
this.field=value;
}
public aca() {

}
public static void main(String args[]) {

aca obj=new aca();
System.out.println(obj.field);
obj=new aca(300);
System.out.println(obj.field);
}
}

当调用默认构造方法时,调用初始化体进行初始化字段;

当调用有参构造方法时,调用有参构造方法进行字段初始化;

三、

class Root
{
    static{
        System.out.println("Root的静态初始化块");
    }
    {
        System.out.println("Root的普通初始化块");
    }
    public Root()
    {
        System.out.println("Root的无参数的构造器");
    }
}
class Mid extends Root
{
    static{
        System.out.println("Mid的静态初始化块");
    }
    {
        System.out.println("Mid的普通初始化块");
    }
    public Mid()
    {
        System.out.println("Mid的无参数的构造器");
    }
    public Mid(String msg)
    {
        //通过this调用同一类中重载的构造器
        this();
        System.out.println("Mid的带参数构造器,其参数值:" + msg);
    }
}
class Leaf extends Mid
{
    static{
        System.out.println("Leaf的静态初始化块");
    }
    {
        System.out.println("Leaf的普通初始化块");
    }    
    public Leaf()
    {
        //通过super调用父类中有一个字符串参数的构造器
        super("Java初始化顺序演示");
        System.out.println("执行Leaf的构造器");
    }

}

public class TestStaticInitializeBlock
{
    public static void main(String[] args) 
    {
        new Leaf();
        

    }
}

结果:

1、静态初始化块只执行一次。

2、创建子类型的对象时,也会导致父类型的静态初始化块的执行

四、

静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。 

五、

public class sum {
    public static int a=0;

    int c;

    public sum(int cc)

    {

    c=cc;

    a++;

    }

    public int get()

    {
    return a;
    }
}

public class cxc {
    public static void main(String[] args)

    {

    sum one=new sum(1);

    sum tow=new sum(2);

    sum three=new sum(3);

    System.out.println(one.get());

    }
}

统计创建类的个数;

 

动手动脑|课后作业

原文:https://www.cnblogs.com/KYin/p/9825998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!