Think in java读书笔记

本文详细解析了Java中多态性的概念及其应用,通过实例展示了如何实现类的动态性,强调了基类和扩展类之间的关系。同时,文章还阐述了构造函数的调用顺序,并提供了内存清理的实现方法。此外,文章探讨了抽象类的使用,包括抽象方法的定义和类的抽象化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第七章:多态性


1、“封装”通过将数据的特征与行为结合在一起,创建了一种新的数据类型。“隐藏实现”通过将细节设置成private,完成了接口与实现的分离。而多态性是站在“类”的角度来
    处理这种逻辑上的分离的。
   (chap7,P2)


2、“上传”使得类的动态性得以实现,但需要注意的是,只有基类是public的情况下,扩展类的复写才可以实现,比如下面的例子:
   public class Test {
 private void f() {
  System.out.println("private f()");
 }


 public static void main(String[] args) {
  Test po = new Derived();
  po.f();
 }
   }


   class Derived extends Test {
 public void f() {
  System.out.println("public f()");
 }
   }
   例子中,Test.f是private的,所以Derived.f其实不是Test.f的复写,Derived.f是一个全新的方法,它连重载都算不上,因为Derived根本看不到基类的f()。
   所以,输出的应该是private f(),而不是public f()。
   (chap7,P12)


3、如果类包含一个或多个抽象方法,那么这个类必须定义为abstract,但如果类没有abstract方法,也可以将类定义为abstract。
   (chap7,P13)


4、构造函数的调用顺序:

①调用基类的构造函数。这是一个递归过程,因此会先创建继承体系的根,然后是下一级派生类,依此类推,直到最后一个继承类的构造函数
   ②成员对象按照其声明的顺序进行初始化
   ③执行继承类的构造函数的正文。
   其实,还不如这样表述表决方便:在一个类的初始化过程中,先按成员对象的声明顺序初始化这些成员变量,然后执行其构造函数;如果有基类,则先初始化基类。
   (chap7,P17)


5、如果要内存清理,则可以从基类开始写一个函数,函数名可以自己定,但调用的时候,必须从顶层开始执行,这刚好与构造函数的调用顺序相反。
   (chap7,P18)


6、开始做Java的时候,不要想着把整个程序做成一个类系,比较好的办法是合成。
   (chap7,P23)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值