Java核心技术卷第五章思维导图+笔记


优秀笔记

5.1 类,超类和子类

  • 在设计时应将通用的方法放在超类中,而将特殊的方法放在子类中。
  • 子类继承父类的所有域和方法,可是却不能直接访问父类中域的值,必须通过父类提供的公共方法。调用父类的方法用关键字super
  • 由于子类不能直接访问到父类的域,故在子类的构造方法中需要用到super来初始化从父类中继承的域。
  • 一个声明为父类类型的对象变量既可以引用父类对象,又可以引用子类对象。虚拟机知道变量实际引用的变量类型,所以能够正确地调用方法,引用哪个类型就调用那个类型的方法。
  • 一个对象变量可以引用多种实际类型的对象的现象称为多态。在运行时能够自动选择调用哪个方法的现象称为动态绑定
  • 方法调用的具体步骤:
    1. 编译器查看对象的声明类型和方法名,然后列出所有本类中和超类中修饰符为public的同名方法。
    2. 编译器查看调用方法是提供的参数类型,如果在1的列表的方法中存在参数类型完全匹配的,那么就调用这个方法,这个过程称之为重载解析
    3. 如果是private方法,static方法,final方法或者构造器,那么编译器将可以准确的知道应该调用什么方法,我们将这种调用方式称之为静态调用。如果调用的方法依赖于隐式参数的实际类型即调用方法的对象变量实际引用的类型,并且在运行时实现动态绑定,那么我们称之为动态绑定
    4. 当程序运行,并采用动态绑定的方式来调用方法时,虚拟机一定调用与对象变量所引用的实际类型最合适的那个类的方法,即优先查找本类,如果本类中没有符合的方法,那么查找父类。
  • 动态绑定的重要特性:无需对现存的代码进行修改,就可以对程序进行扩展。
  • 使用final关键字可以阻止其他类继承此类,在final类中所有的方法都自动声明为final,域则不会。
  • 在Java中每个对象变量都属于一个类型,类型描述了这个变量所引用的以及能够引用的对象类型,即这个类和他的子类。
  • 进行类型转换的唯一原因是:在暂时忽略对象的实际类型后,使用对象的全部功能。使用instanceof操作符可以判断是否能够成功转换if(employee instanceof Manger){};

5.2 object:所有类的超类

  • 在Java中只有基本类型不是对象,object是所有对象的超类。
  • 编写equals方法的建议:

1.比较两个类是否引用同一个对象
if(this == otherObject)return true;
2.检查otherObject是否为null
if(otherObject == null) return false;
比较两个类是否属于同一个类
if(getClass() != otherObject.getClass()) return false;
3.将otherObject强制转换为this的同类,然后在进行相关域的比较。使用==来比较基本类型域,使用equals来比较对象域。
ClassName other = (ClassName)otherObject;
return field1 == other.field1 && Objects.equals(field2,other.field2) && ...;

  • 为了避免发生类型错误,可以使用@Override对覆盖的超类方法进行标记。
    @Override public boolean equals(Object other)
  • hashCode(散列码)是由对象导出的一个整型值,也可以为负数,散列码是没有规律的。他代表的是对象的存储地址。
  • 重写equals方法的同时也必须重写hashCode方法,为了将对象插入到散列表中。
  • Objects.hashCode方法 防止空指针异常。
  • 调用 JDK1.7 中的 Objects.hash方法 ,并提供多个参数,可组合多个散列值。
  • 数组类型的域,使用静态的 Arrays.hashCode方法 来计算散列码。
  • 一个类的equals方法必须与hashCode方法定义一致,即如果equals方法比较ID,那么hashCode方法就需要散列ID,这么做的原因是如果a.equals(b)返回ture,那么a.hashCode()b.hashCode()返回值也要一致。
  • toString方法用于返回描述对象的字符串。
  • getClass().getName()方法用于返回类名的字符串。
  • Object 类定义了 toString 方法,用来打印输出 对象所属的 类名和散列码。
  • 建议为自定义的每一个类增加 toString 方法。

5.3 泛型数组列表

  • ArrayList是一个采用类型参数的泛型数组。使用方法为ArrayList<Employee> staff = new ArrayList<Employee>();
  • 泛型数组可以自动调节数组容量。
  • add方法添加元素,set方法替换元素,get方法获取元素,size方法获取当前数组的长度。
  • 如果调用add方法添加元素且内部空间已经满了,那么泛型数组就会创建一个更大的数组,并将所有的对象拷贝过去。
  • trimToSize方法用于固定当前泛型数组的长度,垃圾回收器将会回收多余的空间,应当确认不会再添加元素时使用此方法。

5.4 对象包装器与自动装箱

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第五版《C语言程序设计》第5章是关于循环结构的学习内容,可以在CSDN上找到思维导图来帮助学习。 思维导图是一种图形化的方法,用于展示知识的关联和结构。通过将相关概念用图形化方式展示,思维导图可以帮助我们更好地理解和记忆知识点。 在CSDN上搜索第五版《C语言程序设计》第5章思维导图,可以找到一些概括了该章节重要知识点的图表。这些思维导图通常使用文字、图形和箭头等元素,以清晰而简洁的方式呈现循环的概念、语法和应用。 通过观看这些思维导图,我们可以获取基本的循环语句的语法知识,包括for循环、while循环和do-while循环。同时,这些图表还会涵盖循环的控制和嵌套循环的相关内容。 在学习循环结构时,思维导图可以作为一个辅助工具,帮助我们理清思路、记忆知识点以及加深对循环的理解。可以通过结合思维导图和课本的内容来进行学习,将图表中的相关概念与具体的代码实例进行对照,加深对循环的掌握。 在C语言编程学习的过程中,使用思维导图可以提高学习效率,帮助我们更快地掌握和运用循环结构的知识。可以将思维导图作为学习的参考资料,加深对C语言中循环结构的理解和应用。 总之,通过在CSDN上找到第五版《C语言程序设计》第5章思维导图,我们可以利用这个工具更好地学习和掌握循环结构的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值