`
lc52520
  • 浏览: 369269 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java的继承,重载,覆写【Z】

    博客分类:
  • java
阅读更多
1、方法继承 利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类。
  • 当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法
  • 在不同包时继承public/protected级别的变量和方法。
2、方法重载 如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。
  • 方法名相同
  • 方法的参数类型,个数顺序至少有一项不同
  • 方法的返回类型可以不相同
  • 方法的修饰符可以不相同
  • main方法也可以被重载
3、方法覆盖 :如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。
  • 子类的方法名称返回类型及参数签名 必须与父类的一致
  • 子类方法不能缩小父类方法的访问权限
  •  子类方法不能抛出比父类方法更多的异常
  • 方法覆盖只存在于子类和父类之间,同一个类中只能重载
  • 父类的静态方法不能被子类覆盖为非静态方法
  • 子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法(满足覆盖约束),    
  •             而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
  • 父类的非静态方法不能被子类覆盖为静态方法
  • 父类的私有方法不能被子类覆盖
  • 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)(P169)
  • 父类的非抽象方法可以被覆盖为抽象方法
4、Super关键字: super和this关键字都可以用来覆盖Java语言的默认作用域,使被屏蔽的方法或变量变为可见(三种情况下的不可见P171)。
  • 父类的成员变量和方法为private使用super访问编译出错
  • 在类的构造方法种,通过super语句调用这个类的父类的构造方法
  • 在子类种访问父类的被屏蔽的方法和属性
  • 只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内不能使用super
5、多态:
  • 对于一个引用类型的变量,Java编译器按照它的声明的类型来处理
  • 对于一个引用类型的变量,运行时Java虚拟机按照它的实际引用的对象来处理
  • 运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,Java虚拟机采用以下绑定规则
            1)实例方法与引用变量实际引用的对象的方法绑定,属于动态绑定
            2)静态方法与引用变量所声明的类型的方法绑定,属于静态绑定
            3)成员变量(包括静态和实例变量)与引用变量所声明的类型的成员变量绑定,属于静态绑定                                                                                                               

 

6、继承的利弊和使用原则:
  • 集成数的层次不可太多
  • 集成数的上层为抽象层
            (1)定义了下层子类都用友的相同属性和方法,并且尽可能默认实现,从而提高重用性
            (2)代表系统的接口,描述系统所能提供的服务
  • 继承关系最大的弱点:打破封装
  • 精心设计专门用于被继承的类
            (1)对这些类必须提供良好的文档说明
            (2)尽可能的封装父类的实现细节,把代表时间细节的属性和方法定义为private类型
            (3)如果某些实现细节必须被子类访问,定义为protected类型
            (4)把不允许子类覆盖的方法定义为final类型
            (5)父类的构造方法不允许调用可被子类覆盖的方法
            (6)如果某些类不是专门为了继承而设计,那么随意继承它是不安全的
分享到:
评论

相关推荐

    重载与覆写/重写的区别

    重载与覆写/重写的区别 区别 重载 覆写 1 单词 OverLoading Override 2 概念 方法名称相同,参数的类型或个数不同 方法名称相同,参数的类型或个数相 同,返回值类型相同 3 范围 发生在一个类之中...

    详解java重载与覆写的区别

    Java中的重载(Overloading)和覆写(Overriding)是面向对象编程中的两个关键概念,它们都是实现多态性的方式,但有着本质的区别。 **重载(Overloading)**: 重载是指在同一个类中可以有多个同名方法,但这些方法的...

    Java的覆写操作实例分析

    Java的覆写操作是一种常见的面向对象编程技术,通过覆写操作,可以实现子类继承父类的属性和方法,并对其进行修改和扩展。本文将通过实例分析,详细介绍Java的覆写操作,包括属性覆写和super调用父类方法覆写相关...

    JAVA中的多层继承

    类的继承格式、继承的关系表示图、访问限制、子类对象的实例化过程、方法的覆写、属性的覆盖、Super关键字、this与super的区别

    行业分类-设备装置-一种数据覆写方法.zip

    在IT行业中,数据覆写是一种常见的数据安全处理技术,尤其在设备装置的管理与保护中扮演着重要角色。本文将详细解析标题“行业分类-设备装置-一种数据覆写方法”所涉及的知识点,以及从描述中我们可以推测的关于数据...

    The Java Language Specification, Java SE 12 Edition.rar

    Java 12可能对方法的重载和覆写有更明确的规定。 4. 控制流:Java提供了多种控制流结构,如if-else、switch、for、while等,用于决定程序执行的顺序。Java 12可能引入了新的控制结构,以提高代码的可读性和效率。 ...

    java源码:哈希计算工具 java-hash.7z

    这个"java-hash.7z"压缩包包含了一个Java实现的哈希计算工具,这是一份经典的学习资源,可以帮助开发者深入理解哈希算法及其在Java中的应用。 哈希(Hash)函数是一种将任意长度输入(也叫做预映射pre-image)通过...

    Java语言与面向对象程序设计第10讲(继承与多态)

    方法的继承则包括了方法的重写,子类可以通过覆写父类的方法来改变其行为。this关键字用于引用当前对象,而super关键字则用于引用父类的实例。 方法的重载(Overloading)是指在同一个类中可以有多个方法具有相同的...

    JAVA中的继承与抽象

    JAVA中的继承与抽象 继承是面向对象编程的基本特征之一,它允许在已有的类基础上创建新的类,并继承已有类的成员变量和成员方法。继承的概念定义是:当类与类之间存在相同(共性)的内容,并满足子类是父类中的一种...

    object中toString方法简介_动力节点Java学院整理.doc

    Object类在Java里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较...

    Java-面向对象(高级篇)--继承的进一步研究.doc

    Java 面向对象高级篇 -- 继承的进一步研究 继承是面向对象编程的三个基本特征之一,通过继承,可以实现代码的重用和扩展。在 Java 中,继承的机制是通过关键字 `extends` 实现的。下面对继承操作中的一些注意点进行...

    Java知识表格,java ee,java web

    - **方法的重载与覆写**:区分方法的重载与覆写。 - **super与this关键字的区别**:比较super与this的用法及差异。 - **继承的图形表示**:使用图形展示继承关系。 ##### 15. 面向对象高级(03) - **final关键字**...

    Java-面向对象(高级篇)--继承的进一步研究.docx

    本文将深入探讨 Java 中的继承机制,包括子类对象的实例化过程、方法的覆写和属性的覆盖。 一、子类对象的实例化过程 在 Java 中,子类对象的实例化过程中需要首先调用父类中的构造方法,然后再调用自己的构造方法...

    java 中继承和多态详细介绍

    重载与覆写不同,它不涉及继承关系,只是提供多种调用同一方法的方式。例如: ```java public class MyClass { public void print(int number) { // 打印整数 } public void print(String text) { // 打印...

    Effective Java第三版1

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,该书的第三版继续提供了关于如何编写高效、优雅、可维护的Java代码的指导。以下是基于给出的目录和部分内容提取的一些关键知识点: ### 第一...

    覆写

    子结构体可以继承这个结构体,并提供不同的函数实现,通过赋值新的函数指针来“覆写”父结构体的方法。例如: ```c typedef void (*print_func)(void* obj); struct Base { print_func print; }; struct Derived...

    Lua 类的继承与函数override

    接下来,我们将深入探讨 Lua 中的类、继承以及函数重写(override)。 首先,让我们理解 Lua 中的“类”。在 Lua 中,你可以创建一个表来代表类,这个表包含了对象的所有属性和方法。例如: ```lua Person = { ...

    开发Applets程序,我们得继承Applet类,并覆写必要的函数,下面几个函数控制了Web页面上的applet生成与执行。

    Java 提供了内置的线程支持,你可以通过继承 `Thread` 类或实现 `Runnable` 接口来创建线程。`Thread.run()` 方法包含线程执行的任务,而 `Thread.start()` 启动线程并调用 `run()`。此外,`Thread.stop()`(不推荐...

Global site tag (gtag.js) - Google Analytics