A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刚刚学完继承,尝试着总结了下代码块,静态代码块,构造代码块,构造函数之间的关系,大家看看有什么不妥,共同进步...
代码块:
        使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块.

静态代码块:
        在类中方法外出现,并加上static修饰.
    作用:给类进行初始化,在加载的时候执行一次.
构造代码块:
        在类中方法外出现,在对象的创建之前执行一次.
构造函数:
        在类中方法外出现,用于给对象成员变量进行初始化.
在继承中运行的先后顺序:
        当子类开始创建对象,静态代码块父类和子类的加载而加载,加载完成之后,java虚拟机调用子类的构造方法,会先调用父类的构造方法super(参数列表),然后父类的构造代码块开始加载,加载完成之后,父类的构造函数开始加载,等父类的成员变量初始化完成之后,子类开始初始化自己特有的成员变量,同样也是先运行构造代码块,在运行构造方法.

1 个回复

倒序浏览
  1. package bean;

  2. import demo.StringReplace;

  3. /**
  4. * @author 小媛
  5. *
  6. */
  7. public class Person {
  8.        
  9.         private StringReplace name;
  10.         private int age;
  11.        
  12.         static{
  13.                 System.out.println("静态代码块");
  14.         }

  15.         public Person() {
  16.                 super();
  17.                 System.out.println("无参构造函数");
  18.         }
  19.        
  20.         public Person(StringReplace name, int age) {
  21.                 super();
  22.                 this.name = name;
  23.                 this.age = age;
  24.                 System.out.println("有参构造函数");
  25.         }

  26.         public StringReplace getName() {
  27.                 return name;
  28.         }

  29.         public void setName(StringReplace name) {
  30.                 this.name = name;
  31.         }

  32.         public int getAge() {
  33.                 return age;
  34.         }

  35.         public void setAge(int age) {
  36.                 this.age = age;
  37.         }
  38.        
  39.        
  40.         public void eat(){
  41.                 System.out.println("person类的eat方法");
  42.         }
  43. }
复制代码


还可以通过打印 看一看它们的先后循序和是否被调用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马