继承的特点注意事项以及类的初始化顺序和加载顺序day08


    继承的好处
        提高了代码的复用性
            多个类相同的成员可以放到同一个类中
        提高了代码的维护性
            如果功能的代码需要修改,修改一处即可
        让类与类之间产生了关系,是多态的前提
            其实这也是继承的一个弊端:类的耦合性很强

    耦合性 - 内聚:我们以后写程序专注与高内聚,低耦合。



    继承的特点:
        1、在java中class类一次只能继承一个class类,不能一次多继承
        2、java允许出现类与类继承形成继承体系

    使用继承的注意事项:
        1、子类无法继承父类中所有私有的成员(成员变量成员方法)
        2、子类无法继承父类中的构造方法(一会说明原因)
        3、不要因为有部门功能重复就立刻使用继承
        4、什么时候用继承呢?
            类与类之间的关系满足英语语法上的" is a "  举例:猫是动物,狗是动物。动物就可以被定义成父类。




    1、要想对子类进行初始化,就必须先初始化其父类
    2、一个类初始化,先加载成员变量,再加载构造方法


    在Java中,类的加载顺序遵循一定的规则,基本上遵循“顺序”和“层次”。以下是加载顺序的概要:
        父类静态变量和静态代码块(按在代码中出现的顺序)。
        子类静态变量和静态代码块(按在代码中出现的顺序)。
        父类实例变量和代码块(按在代码中出现的顺序)。
        父类构造函数。
        子类实例变量和代码块(按在代码中出现的顺序)。
        子类构造函数。

    类的加载的顺序:先加载父类,再加载子类的
    类的初始化的顺序:先初始化父类,再初始化子类的

    在有父子关系中的两个类中,先加载父类中的静态成员变量以及静态代码块,再加载子类中的静态成员以及静态代码块,父类的成员变量先进行初始化,然后再
    初始化父类的构造代码块,之后父类的构造方法,然后是子类的成员变量先进行初始化,然后再初始化子类的构造代码块,之后子类的构造方法。

class X {
    X() {
        System.out.print("X");
    }
    Y b = new Y("aaaaaaa");
}

class Y {
    Y(String s) {
        System.out.print(s);
    }
}

public class Z extends X {
    Y y = new Y("bbbbbb"); // 第一步
    Z() {
//        super();
        System.out.print("Z");
    }

    public static void main(String[] args) {
        new Z(); // YXYZ
    }
}
posted @ 2024-08-04 21:51  ていせい  阅读(3)  评论(0编辑  收藏  举报