首页 > 其他分享 >继承的特点注意事项以及类的初始化顺序和加载顺序day08

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

时间:2024-08-04 21:50:04浏览次数:13  
标签:初始化 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
    }
}

标签:初始化,day08,子类,代码,顺序,父类,加载
From: https://www.cnblogs.com/qiwei-bigdata/p/18342250

相关文章

  • 继承和成员方法的关系,重载和重写day08
    /*继承和成员方法的关系1、寻找规则:现在本类中寻找,若找到就使用;若本类中没有对应方法,就使用继承自父类中的方法,如果还是没有,就报错。2、java中所有的类都有一个共同的父类:Object3、如果子类中的方法的返回值类型,方法名,参数列表都与父类中一样,这样......
  • Java流程控制02:顺序结构
    JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构。语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。顺序结构在程序流程图中的体现就是......
  • 日撸Java三百行(day12:顺序表二)
    目录一、关于昨天的补充1.final关键字2.toString()方法二、今日代码实现1.顺序表的查找操作2.顺序表的插入操作3.顺序表的删除操作4.数据测试总结一、关于昨天的补充1.final关键字publicstaticfinalintMAX_LENGTH=10;在昨天的这行代码中,用到了final关键字......
  • 一天速通顺序结构(0基础,软件“Dev-c++”需自己下载)
    今天浅浅带大家速通顺序结构,话不多说,上干货!1,cout语句我们都知道,任何程序都会用到输出,那该怎么实现输出呢,代码实现:#include<iostream>usingnamespacestd;intmain(){cout<<"字符串";cout<<endl;return0;}其中"#include<iostream>"是头文件,起到声明输入输出......
  • 内存管理-25-内存初始化
    基于msm-5.4一、C代码部分1.调用路径_head//head.Sstext//head.S__primary_switch//head.S__primary_switched//head.Skaslr_early_init//kaslr.c最先调用,可配置会否生效与不生效,默认生效early_fix......
  • 顺序结构
    顺序结构顺序结构通常包含以下几个部分:输入操作:程序开始执行时,可能需要从用户那里获取一些输入数据,这些数据将用于后续的计算或处理。处理操作:根据程序的逻辑,对输入的数据进行一系列的处理或计算。这部分是程序的核心,包含了实现程序功能的关键代码。输出操作:将处理的结果展示......
  • c语言结构体的概述,定义结构体变量类型的方法,结构体变量的引用,结构体变量的初始化,结构
    1.C语言结构体的概述在C语言中,结构体(struct)是一种复合数据类型,用于将不同类型的数据组合在一起。它可以包含基本数据类型(如int、float、char等)以及其他结构体。结构体非常适合表示具有多种属性的复杂数据,如学生信息(包含姓名、年龄、成绩等)或坐标点(包含x和y坐标)。结构......
  • mysql密码的初始化,修改与重置
    目录mysql密码的初始化,修改与重置郑重说明:初始化密码(第一次使用前要初始化密码)查看密码(已登录状态)修改密码(已知原密码)忘记密码(密码找回)诺mysql装在Windows诺mysql装在Linux结尾systemctl为什么可以管理mysql附件mysql密码的初始化,修改与重置郑重说明:文章guixiang原创,全......
  • 顺序表基础
    在C语言中,顺序表是一种线性表的实现方式,通常使用数组作为底层存储结构。顺序表具有高效的随机访问特性,也可对元素进行插入和删除操作。主要用到动态内存管理(malloc,realloc,calloc,free),数组,结构体,指针,一般推荐使用动态顺序表。//静态顺序表structSeplist{intarr[100];......
  • 关于一个简单的顺序表代码
    1.首先是头文件SeqList.h的代码:#pragmaonce#include<stdio.h>#include<assert.h>#include<stdlib.h>typedefintSXBint;typedefstructSL{ SXBint*a; intsize; intcapacity;}SLnode;//初始化voidSeqLsitInit(SLnode*ps);//尾插voidSeqPushback(S......