zoukankan      html  css  js  c++  java
  • 3-类与对象-动手动脑

    一:1.

    2.程序源代码:

     1 class InitializeBlockClass
     2 {
     3     {
     4         field=200;
     5     }
     6     public int field=100;
     7     public InitializeBlockClass(int value)
     8     {
     9         this.field=value;
    10     }
    11     public InitializeBlockClass(){}
    12     public static void main(String[] args) 
    13     {
    14         InitializeBlockClass obj=new InitializeBlockClass();
    15         System.out.println(obj.field); // ?
    16         obj=new InitializeBlockClass(300);
    17         System.out.println(obj.field); // ?
    18     }
    19 }

    3.程序结果截图:

    4.结果分析:

    (1)

    {

        field=200;

    }

    该部分为类的初始化块,可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。类的这种“没有名字”的“成员”,多用于初始化类的字段。 

    (2)

    public int field=100;  在定义时进行初始化,此时field = 100;

    System.out.println(obj.field); 输出field的值100。

    (3)

    obj=new InitializeBlockClass(300);

    System.out.println(obj.field);

    利用构造方法进行初始化,将field的值初始化为300,输出300。

    5.规律总结:

    Java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。

    如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

    二:1.

    2.程序源代码:


    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();

    }
    }

    3.程序结果截图:

    4.规律总结:静态初始化块的执行顺序:

    创建子类型的对象时,也会导致父类函数的执行,先执行静态函数,在执行public函数,最后执行函数。

    三:1.

    2.程序源代码:

     1 package lei1;
     2 
     3 public class Fangfa 
     4 {
     5         public static void a()
     6         {
     7             System.out.println("类的方法");
     8         }
     9         public void b()
    10         {
    11             System.out.println("对象的方法");
    12         }
    13 }
    14 public class Jingshi 
    15 {    public static void main(String[] args)
    16     {
    17          Fangfa.a();
    18         Fangfa e=new Fangfa();
    19         e.b();
    20         e.a();
    21      }
    22 }

    3.结果截图:

  • 相关阅读:
    How to Integrate JCaptcha in Spring Security
    精简的webservice
    linux时间与Windows时间不一致的解决
    java泛型
    spring全局变量引起的并发问题
    ByteBuffer常用方法详解
    cindy
    NIO之Buffer的clear()、rewind()、flip()方法的区别
    Java NIO(New I/O)的三个属性position、limit、capacity
    技术选型
  • 原文地址:https://www.cnblogs.com/liurx/p/7699579.html
Copyright © 2011-2022 走看看