java学习day08-继承、多态、组合

java学习第八天内容总结:

学习内容:

学习大纲

总结:

1、继承:extends → 拓展

       作用:

        1) 解决代码重复问题。

        2)表示出一个体系。

             ┌ 单继承。只能有一个直接父类。(不允许多继承)

 Java    ├

             └多重继承。A ← B ←BB

        Object类是Java语言的根类。(任何类都是Object的子类)

        一般:开发工程中先编写多个自定义类,发现共同代码,抽取出一个父类。

        以后开发中,基于框架/组件继续开发。定义新的类去继承于框架/组件中提供的父类。

        注:父类的构造器,子类不能继承,因为构造器必须和当前类名相同。

2、Override

        作用:

            解决父类某一行为不符合子类具体特征,子类重新定义父类的方法,并重写方法体。

        原则:

            1)继承才有方法覆盖,不存在字段覆盖概念。

            2)异常类型、返回类型,其子类更具体。

            3)访问权限,其父类更具体。

        判断是否是覆盖方法的必杀技:@Override标签。若未覆盖编译出错。

        区别:

            Overload:解决同一个类中,相同功能方法。

            Override:解决子类继承父类,重写子类具体特征方法。

3、super关键字 → 先有父类,再有子类。

        区别:

            this:当前对象。

            super:当前对象的父类对象。

        注:

        1)如果父类不存在可以被子类访问的构造器,则不能存在子类。(一般不存在)

        2)如果父类没有提供无参构造器,此时子类必须显示通过super语句去调用父类带参数的构造器。

        应用:

        1)子类方法中,调用父类被覆盖的方法,必须使用super。

        2)子类构造器中,调用父类构造器必须使用super。格式:super([实参]);

        遮蔽:

        1)满足继承访问权限,隐藏父类静态方法。

            子类定义的静态方法签名和父类静态方法签名相同。

        2)满足继承访问权限,隐藏父类字段。

            子类定义的字段和父类字段名相同,只能通过super访问被隐藏的字段。

        3)隐藏本类字段

            本类中,某局部变量名和字段名相同,只能通过this访问被隐藏的本类字段。

        注:

            static不能和super以及this共存。

            遮蔽不叫覆盖。

4、Object对象

        对象:存在堆空间。

        常见方法:

            1) Protected void finalize();

            垃圾回收器,回收对象时调用。(开发不直接使用)

            2) Class <?> getClass();

            返回当前对象的真实类型。(父类或子类类型)

            3) int hashCode();

            返回该对象的哈希码值,hashCode决定了对象哈希表中的存储位置。不同对象hashCode不同。

            4) boolean equals(Object obj);

            当前对象(this)和参数(obj)做比较。

            在Object类中的equals方法,本身和“==”符号相同,都是比较对象的内存地址。

            建议:每个类都该覆盖equals方法,不是比较内存地址,而是比较数据内容。

            5) String toString();

            返回对象的字符串表示。

            打印对象 → 底层:打印对象的toString方法。

            默认:打印对象十六进制的hashCode值,但更关心对象中存储的数据。

            建议:每个类都该覆盖toString方法,返回数据内容。

5、多态

        前提:存在继承、实现关系。

        区别:

            1)继承:类与类。

            2)实现:接口与实现类。

        特点:把子类对象赋给父类变量,在运行时期会表现出具体的子类特征。

        作用:把不同的子类对象,都当做父类类型来看待,可以屏蔽不同于子类对象之间的实现差异,从而写出通用的代码达到通用编程,以适应需求的不断变化。

        静态方法的调用只需要类即可。如果使用对象来调用静态方法,其实使用的是对象的编译类型来调用静态方法。

6、instanceof 运算符

        判断该对象是否是某一个类的实例。

        语法:boolean b = 对象A instanceof 类B;

7、组合关系

        作用:解决代码复用问题。

        继承关系破坏封装。如果A类是B类的一种特殊情况,应该用继承实现,否则,使用组合方式。


练习1:继承

extends继承关键字

练习2:override覆盖

@Override标签覆盖检验

练习3:super关键字

super关键字
三种隐藏

练习4:多态

多态
多态情况一:仅父类存在方法doWork
多态情况二:仅子类存在方法doWork
多态情况三:父类与子类都有方法doWork
多态情况四:父类与子类都有静态方法doWork

练习5:instanceof运算符

instanceof运算符

练习6:组合关系

排序类:小→大
GroupDemo类包含SortMethod类
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 父类与子类 在Java术语中,如果C1类扩展自另一个类C2,我们称C2为父类,也称超类或基类,称C1为子类,也称次...
    Steven1997阅读 1,240评论 1 2
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,564评论 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,865评论 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,732评论 0 11
  • 越沒錢越有錢,越沒自信,越自信,越沒能量,越有能量,越糟粕,越有狀態,越被拒絕,越興奮,越不好意思,越好意思,時時...
    A苟峪豪阅读 204评论 0 2