码迷,mamicode.com
首页 > 其他好文 > 详细

第三讲类与对象

时间:2017-10-20 15:56:12      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:ring   实例   分享   next   integer   自定义   oid   rgs   center   

【动手动脑】

 技术分享

错误分析:

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

源程序中并没有Foo()此构造函数,所以无法实现,所以需要再写一个构造函数。

 

【自找麻烦】

技术分享

 

 

总结

首先,在main函数中先调用不同的构造函数。对于初始化板块,源程序运行会自行覆盖,所以把int field与初始化板块交换顺序,最后输出就是200。

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

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

 

【动手动脑】

 技术分享

 

总结:

静态初始化块只执行一次。因为静态初始化板块只会在第一次装入系统的时候运行,当再次实例化的时候就不需要再执行了,因为已经存在了。

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

 

【一个有趣的问题】

验证:

//信1605-2班     那颖    20163448

public class Verify

{

private int x=9;

public static void display()

{

Verify v=new Verify();

System.out.println(v.x);

}

public static void main(String[] args)

{

display();

}

public void get(int n)

{

x=n;

}

}

 

【课后作业1】

源程序:

//信1605-2  那颖     20163448

import java.util.Scanner;

class Number

{

static int number=0;

static void display()

{

++number;

System.out.println("At present now it has created "+number+" objects.");

}

}

public class ReferCreateObject

{

 

public static void main(String[] args)

{

Scanner input=new Scanner(System.in);

String character=" ";

do

{

Number a=new Number();

a.display();

System.out.println("是否继续创建新对象(Y/N)");

    character=input.next();

}while(character.equals("Y"));

}

 

}

【运行结果】

 技术分享

【思考Integer的“诡异”特性】

 技术分享

 

使用javap反编译在cmd中可以看到调用了Interger中的valueOf函数,因为Interger的适用范围是-128到127,而129超过了该范围。

第三讲类与对象

标签:ring   实例   分享   next   integer   自定义   oid   rgs   center   

原文地址:http://www.cnblogs.com/-2016/p/7699571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!