类的加载顺序

1.父类

package com.xinzhi;

public class Father {

    // 所有的类都会有一个顶级的父类,object
    // private仅支持本类
    // protected可在父子类之间调用

    // 父类的静态变量
    public static String NAME = "老王";

    /**
     * 类加载的时候就会调用
     * 类加载的时机  第一次主动使用就会加载这个类,把他加载到内存
     */
    static {
        System.out.println("父类的静态属性:" + NAME);
        System.out.println("父类的静态代码块");
    }

    // 非静态的属性
    private String hobby = "看电视";

    // 非静态代码块
    {
        System.out.println("父类的非静态属性:" + hobby);
        System.out.println("父类的非静态代码块");
    }

    public Father(String hobby) {
        this.hobby = hobby;
        System.out.println("父类的构造方法");
    }

    public void smoke(){
        System.out.println("我爱抽中华!");
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

2.子类

package com.xinzhi;

public class Son extends Father {

    // 子类的静态变量
    public static String NAME = "不知道爸爸是谁的孩子";

    /**
     * 类加载的时候就会调用
     * 类加载的时机  第一次主动使用就会加载这个类,把他加载到内存
     */
    static {
        System.out.println("子类的静态属性:" + NAME);
        System.out.println("子类的静态代码块");
    }

    // 非静态的属性
    private String hobby = "子类看电视";

    // 非静态代码块
    {
        System.out.println("子类的非静态属性:" + hobby);
        System.out.println("子类的非静态代码块");
    }

    /**
     * 构造子必须先构造一个父类,而且必须首先构造父类,必须是第一行
     */
    public Son(){
        super("烫头");
        System.out.println("子类的构造器");
    }

    public void swim(){
        // 想让父亲也抽烟,父类也叫超类
        super.smoke();
        // 游泳前先抽根烟
        System.out.println("我的爱好是:" + getHobby());
    }

    /**
     * @Override  注解,当子类重写父类的方法时,要加这个
     */
    @Override
    public void smoke(){
        System.out.println("我爱抽红塔山");
    }
}

3.Test

package com.xinzhi;

public class Test {

    public static void main(String[] args) {
        // 子类重写调子类,子类不重写调父类
        Son son = new Son();

    }
}

4.运行结果

先是父类属性,再是子类属性,再是构造父类,最后构造子类

父类的静态属性:老王
父类的静态代码块
子类的静态属性:不知道爸爸是谁的孩子
子类的静态代码块
父类的非静态属性:看电视
父类的非静态代码块
父类的构造方法
子类的非静态属性:子类看电视
子类的非静态代码块
子类的构造器

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值