• 【软件工程师从0到1】- Java面向对象基础 (知识汇总)


    前言

    介绍:大家好啊,我是hitzaki辰。

    社区:(完全免费、欢迎加入)日常打卡、学习交流、资源共享的知识星球。

    自媒体:我会在b站/抖音更新视频讲解 或 一些纯技术外的分享,账号同名:hitzaki辰。

    正文开始,抓紧上车!


    一 - 类的组成

    Java类的成员有5类:属性(成员属性)、方法、构造器、代码块、内部类,主要由4部分组成:

    1)类变量:类型本身具有的属性。

    2)类方法:类型本身可以进行的操作。

    3)实例变量:类型实例具有的属性。

    4)实例方法:类型实例可以进行的操作。

    拓展

    1可以用类变量体现一个类的固有属性,这个固有属性通常是个常量

    3)实例方法比类变量多一个隐含参数:self、即当前操作的实例本身。因为实例方法也是通过self间接调用实例中的属性的。

    4)类中的成员变量在创建对象时会分配一个默认值,与数组类似。

    5)成员变量是在堆内存中, 局部变量是在栈内存中的。   类中的局部变量:各种代码块内和方法形参

    6)一般不将实例变量声明为public,而是只通过实例方法对它进行操作。

    二 - static修饰符

    1)在类中,用static声明的成员变量为静态成员变量,也称为类变量。

    2)类变量的生命周期和类相同,在整个应用程序执行期间都有效。

    3)被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

    4static可以用来修饰类的成员方法、类的成员变量,另外也可以编写static代码块来优化程序性能。

    5)子类不能重写静态方法,事实上只是将父类中的同名方法进行了隐藏。

    6还能用来修饰内部类、用来静态导包

    三 - 构造方法

    构造方法又为构造函数,构造器,constructor  (同样可以重载)

    Person p = new Person();  (在右侧Person后面出现的小括号, 其实就是在调用构造方法)

    1)它的作用就是对象的初始化, 在创建对象时自动调用

    2)构造方法无需设置返回值,默认是此类本身的实例。

     

    3Java类必须至少存在一个构造方法,若没有明确编写则系统自动会生成一个无参的构造方法,但还是建议自己手动编写一个无参构造器,避免出错。

    4)私有构造方法用途: (构造方法第一行必须调用this()super(),否则系统自动调用无参的super() ,若不存在,则编译错误。)

    1.private修饰构造方法,提高代码复用。

    2.只想让类被静态访问时,比如Math

    3.当能创建类的实例,但只能被类的静态方法调用时,比如单例模式。静态方法去调用私有构造方法,若以创建过了,则将创建过的返回。

    静态和实例的加载顺序

    1)情况1:当类被加载时 输出顺序为静态代码块 实例代码块

    1.     static{
    2.         System.out.println("静态代码块");
    3.     }
    4.     public static Test test1=new Test();
    5.     {
    6.         System.out.println("实例代码块");
    7.     }

    2)情况2(将静态代码块与静态成员test1换位置):输出顺序变为实例代码块 静态代码块。

    Java构造函数执行顺序:①类加载(父类静态代码块->子类静态代码块) 

        ③父类非静态代码块      ②父类构造方法       ③子类非静态代码块       ④执行构造方法的代码

    四 - this关键字

    this

    1this是一个关键字,翻译为:这个。

    2this是一个引用变量,this变量中保存了内存地址指向了自身实例,this存储在JVM堆内存中Java对象的内部。

    3、可以用来调用对象本身的成员变量、成员方法。this.x     this.fun();

    4、用this可以在构造方法中调用自身其他构造方法,但只能在其代码块第一行调用,并且只能调用一个。

    结尾

    感谢你看到这里,如果感觉内容不错的话请点赞支持一下!

    如果小伙伴对我的讲解有疑问,欢迎评论区讨论。

  • 相关阅读:
    MYSQL之函数
    人工智能与神经网络-激活函数
    day09学习总结
    2022款Thinkphp家政上门预约系统-全开源系统源码
    45.限流Throttling及源码解析
    【Java 基础篇】Java 自动装箱与拆箱:优雅处理基本数据类型与包装类的转换
    springboot项目的打包发布部署,jar和war的区别
    读<深入理解Java虚拟机-第3版>
    华为机试真题 C++ 实现【查找接口成功率最优时间段】
    二叉搜索树
  • 原文地址:https://blog.csdn.net/m0_56988741/article/details/134504461