知识点补充

对象的创建
      MyClassName myName = new MyClassName();
     使用 new 关键字来创建该类的对象, 这个过程叫做类的实例化
    本质就是在内存空间的堆申请一块存储区域
    用于存放该对象的独有特征信息

引用的定义
       语法格式
        MyClassName myName = new MyClassName();
        myName.memberVariableName = value;
    使用引用数据类型定义的变量叫做引用型变量, 简称"引用"
    引用变量主要用于记录对象在堆区中的内存地址信息
     __________        ______________________
    |   栈区   |      |堆区 new Person();____|
    |          |      |     0x10--->name|null|
    |          |      |              age|_0__|
    |__________|      |______________________|
    |main 方法 |      |方法区 class Person {  |
    | Person p;|      |         String name; |
    |   0x10   |      |         int age;     |
    |__________|      |_______}______________|

    可以给引用类型赋值为 null, 表示不指向任何对象
        Person p = null;
    此时如果通过引用访问成员变量或调用方法,会产生空指针异常

引用数据类型之间的转换
    必须发生在父子类之间, 否则编译报错
    自动类型转换
          小类型向大类型的转换
         子类转为父类, 叫做向上转型或隐式类型转换
    强制类型转换
            大类型向小类型的转换
            父类转为子类, 叫做向下转型或显式类型转换
     若目标类型并不是该引用真正指向的数据类型则编译通过, 运行阶段发生类型转换异常
    应该在强转前进行判断, 格式如下:
            if (引用变量 instanceof 数据类型)
       判断引用变量指向对象是否为后面的数据类型

封装 -- encapsulation
        隐藏成员变量的细节以及保证成员变量数值的合理性
        对成员变量进行密封包装处理
        避免出现与现实不符合的数值

  实现流程
        私有化成员变量, 使用 private 关键字修饰
        提供公有的 get 和 set 方法
        在方法中进行合理值的判断
        在构造方法中调用 set 方法进行合理值判断
      成员变量和方法什么修饰符都没有叫做默认访问权限
        级别介于 private 和 public 之间

继承
    子类 -- subclass, 父类 -- parent class
    让多个类吸收公共类中已有特征和行为
    而在多个类型只需要编写自己独有特征和行为的机制
   使用 extends (扩展) 关键字来表示继承
        public class Worker extends Person
       Person 类叫超类, 父类, 基类
       Worker 类叫派生类, 子类, 孩子类
    使用继承提高了代码复用性, 可维护性及扩展性是多态的前提条件

 继承特点
    子类不能继承父类的构造方法和私有方法,
     但私有成员变量可以被继承, 但不能访问
    无论使用何种方式构造子类的对象,都会自动调用父类的无参构造方法,来初始化从父类继承的成员变量, 相当于在构造方法第一行写 super().
    使用继承必须满足"子类 is a 父类"逻辑关系不能滥用继承

成员覆盖

 一般发生在子类继承父类的成员函数之间(成员变量之间一般很少使用),当子类函数的定义和父类相同时(名称相同,参数列表相同,返回类型相同),最后调用的是子类中的方法,这叫做覆盖或重写(Override)。

    注:1、如果在子类中定义了一个名称和参数列表与父类相同的函数,但是返回类型不同,此时系统会报错。

    2、 在重写时,子类函数的访问权限不能比父类的更加严格。比如,父类的成员函数访问权限是 public,子类重写时,就不能定义为 protected。

    3、在覆盖的情况下,如果一定要在子类中调用父类的成员函数,可以使用 super关键字,调用父类的成员函数方法是:super.函数名。

成员覆盖的作用

          在不改变源代码的情况下,能够对一个模块的功能进行改造。对父类进行继承时,拥有的一部分功能无法完全满足需要,我们就可以通过覆盖完善。

equals

       equals 方法(是String类从它的超类Object中继承的)==用于比较引用和比较基本数据类型时具有不同的功能:

         比较基本数据类型,如果两个值相同,则结果为true

        而在比较引用时,如果引用指向内存中的同一对象,结果为true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值