• 第三讲类与对象


    【动手动脑】

     

    错误分析:

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

    源程序中并没有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超过了该范围。

  • 相关阅读:
    函数参数
    字符编码
    本周内容
    int,float,str,list,dict,元组
    python 基础变量
    Python学习(小笔记一)
    🌐 网络管理
    📓 LVM相关
    📹 进程管理(二)
    🎬进程管理
  • 原文地址:https://www.cnblogs.com/-2016/p/7699571.html
Copyright © 2020-2023  润新知