Java基础知识四——类与对象

    xiaoxiao2022-07-02  108

    类的基本操作

    如何定义类 [限定符] class类名称 [继承定义] [接口实现]{类体 class body} 例如: public class ClassName extends BaseClass implements lnterface{ 属性 fields; 方法 methods; 内部类 }定义属性 限定符 数据类型 属性名称构造方法 限定符 方法名称(必须和类型名一样)(参数列表)【异常】 { 初始化部分 } 构造方法经常用到重载 1.如果没有明确给出构造方法,可以认为java编译器默认给了一个 public类名(){}定义方法 限定符 返回值类型 方法名称 参数列表 { }

    利用类构造对象的语法

    类类型变量变量名 = new 构造方法(实参列表)

    如何使用对象

    对象.属性;对象.方法(实参列表);使用匿名对象: new 构造方法().方法(实参列表); new 构造方法().属性;

    访问限定符

    public /private /protected/什么都没有

    访问限定符类内部包内部不是同一包的代码publicYYY空白YYNprivateYNNprotectedYYN 没有明确的理由的情况下,使用private.顶级使用场景下 修饰外部类 用 public、不写、包私有在成员级别 修饰属性、方法、内部类 用 public、protected、不写、包私有、private一个java源文件中只有一个public外部类

    内存模型的理解

    把Java的内存分成三个区域—— 栈、 堆、 方法

    局部变量、形参 在栈区 生命周期(空间的有效期)是伴随方式的执行结束而消失

    方法区 类的信息、方法的代码

    堆区 对象(属性)

    当对象没有引用指向他时,这个对象被视为垃圾对象,随后会被垃圾回收器回收GC(Garbage Collector),但注意不要过多产生无用对象。

    调用方法想象成会传入一个对象作为隐式参数

    构造对象过程 A a = new A(。。。) (1)创建一个引用变量 (2)计算对象所需要的内存,从JVM申请内存空间,数据未初始化 (3)构造方法负责将申请出的内存初始化


    this关键字

    1.局部变量/形参或其他,与属性方法或者其他重名导致直接通过名称访问出现歧义(Name Shadow)命名遮挡 2.关键字this (1)通过this全名访问属性方法 (2)通过this访问其他构造方法,但调用必须放在第一行 (3)this代表这个对象本身


    static关键字

    static 关键字的方法 (1)修饰属性 —— 静态属性 类变量 (2)修饰方法 —— 静态方法 (3)修饰内部类 (4)静态代码块 (5)import static包 最核心的一点就是static和对象进行解绑静态属性 静态属性 vs 属性 静态属性存放在类上属性存放在对象上(堆)【访问限定符】 static 数据类型 静态属性名称 如何访问 (1)类内部:直接以名称 (2)类外部: 类名.属性 用处:对象之间可以共享一份数据 静态方法 静态方法 vs 方法 静态方法没有隐式对象普通方法隐式传入一个对象因为没有对象(隐式)则: (1)this关键字不能用 (2)对象的普通属性不能访问 (3)无法调用普通方法 调用静态方法 (1)内部 : 直接调用 (2)外部、内部 类名称.方法(…) //推荐 (3)外部、内部 对象名称.方法(…)//不推荐
    最新回复(0)