zoukankan      html  css  js  c++  java
  • 五(十三)代码块

     类的成员之四:代码块
     1.代码块的作用:初始化当前类,或者对象;
     2.代码块如果有修饰的话,只能用static;
     3.分类:静态代码块 vs 非静态代码块;
     4.静态代码块
             可以有输出语句;
             随着类的加载而执行;且执行一次;
             可以初始化类的信息
             如果定义了多个静态代码块,则按照声明的先后顺序执行,静态代码块的执行优先非静态代码块的执行;
             只能调用静态结构 不能调用 非静态结构
             
     5.非静态代码块
             可以有输出语句;
             随着对象的创建而执行;
             每创建一个对象,就执行一次非静态代码块;
             作用:可以在创建对象时,对对象的属性等进行初始化;
             如果定义了多个非静态代码块,则按照声明的先后顺序执行
             可以调用静态结构 和 非静态结构
     对象属性可以赋值的位置:
     a.默认初始化
     b.显示初始化;
     c.构造器初始化;
     d.对象.属性
     e.代码块赋值
     
     执行顺序:a b e c d e
     由父及子,静态先执行;在下面例子中,有一个静态代码块和非静态代码块;这里默认就是先执行静态代码块;并且静态代码块只执行一次;

    Person6有父类,并且他的父类有代码块,那么,先执行父类的代码块,再执行Person6的代码块;确切的说是:先执行父类的静态代码块,再执行子类的静态代码块,先执行父类的非静态代码块

    再执行子类的非静态代码块;

    查看代码:

     1 public class Day14CodeBlock20 {
     2 public static void main(String[] args) {
     3     String desc = Person6.desc;
     4     Person6 person1 = new Person6();
     5     Person6 person2 = new Person6();
     6 }
     7 }
     8 class Person6{
     9     private String name;
    10     private int age;
    11     static String desc ="我是一个人";
    12     public String getName() {
    13         return name;
    14     }
    15     public void setName(String name) {
    16         this.name = name;
    17     }
    18     public int getAge() {
    19         return age;
    20     }
    21     public void setAge(int age) {
    22         this.age = age;
    23     }
    24     
    25     //static代码块
    26     static{
    27         System.out.println("静态代码块");
    28     }
    29     //代码块
    30     {
    31         System.out.println("非静态代码块");
    32     }
    33     
    34     
    35     
    36     public void eat() {
    37         System.out.println("人吃饭。。。。");
    38         study();
    39     }
    40     
    41     public void study() {
    42         System.out.println("学习。。。");
    43     }
    44     public Person6(String name, int age) {
    45         //super();
    46         this(age);
    47         this.name = name;
    48         //this.age = age; //等同于 this("Tome");
    49     }
    50     public Person6() {
    51         super();
    52     }
    53     public Person6(String name) {
    54         this();//调用当前的空参构造器
    55         //super();
    56         this.name = name;
    57         
    58     }
    59     public Person6(int age) {
    60         //super();
    61         this.age = age;
    62     }
    63     public static void info() {
    64         System.out.println("我是一个快乐的人!");
    65     }
    66     
    67 }
  • 相关阅读:
    Linux 性能监测:CPU
    Linux 性能监测:介绍
    数据库设计
    数据库设计
    如何将Virtualbox和VMware虚拟机相互转换
    如何将Virtualbox和VMware虚拟机相互转换
    stat()获得文件信息
    stat()获得文件信息
    网游创业为什么会失败?
    网游创业为什么会失败?
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13387696.html
Copyright © 2011-2022 走看看