`

java学习之重载(overload) 重写(override) 继承(extends) 多态

 
阅读更多
重载方法满足以下条件:

                               1. 方法名要相同

                               2. 方法参数不同(数量,类型,顺序)

                               3. 返回值可以同可不同

                               4. 修饰符号可同可不同
方法的覆盖满足以下条件:
                               1. 首先要有继承

                               2. 子类方法名称和方法签名必须与覆盖的方法相同

                               3. 子类方法的返回类型必须与覆盖的方法相同

                               4. 子类不能缩小所覆盖方法的访问权限

                               5. 子类方法不能抛出比覆盖方法更多的异常

方法的重载(overload)就是:


     方法名相同,方法参数的个数,顺序,类型至少有一个不同,方法返回类型可以不同,修饰符也可以不同。

public class TestConstract {
public static void main(String[] args, int r) {
}

//少一个参数,返回类型也不影响
public static int main(String ag) {
return 0;
}

//当参数相同时报错,返回值不同时,报错,所以返回值不是重载的条件 
// public static int main(String[] args, int r){
// return 0;
// }

// //修饰符也不是构成重载的条件
// private static int main(String[] args,int r){
// return 0;
// }

//参数顺序不同,没问题
public static void main(int r,String[] args){

}

/**
* 总得来说,影响方法重载的是参数的类型,参数顺序和个数。
*/
}


方法的重写覆盖(override):子类(所以说要有继承)方法的名称,返回类型,参数签名必须和父类的是一样的,且子类不能缩小父类的访问权限(public,private。。),这违背了多态,子类不能抛出比父类更多或者大的异常 ,重写只能存在于子类和父类,在同一个类中只存在重载,不存在重写。父类的静态方法不能被子类覆盖成非静态的方法,但是子类可以定义和父类同名的静态方法来影藏父类的静态方法,但是也要满足覆盖的条件。子类影藏父类的静态方法和覆盖父类的实例方法的区别在于,在运行时,java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。同样父类的非静态方法不能被子类覆盖成静态方法。父类的私有方法不能被子类覆盖,因为覆盖的前提是子类继承了那个方法,而私有的并没有被继承。最后就是抽象的。父类的抽象方法可以通过两种路径覆盖,第一种是实现父类的抽象方法,并扩大权限,第二种是重新声明抽象方法,但不实现,仅仅为了扩大权限,父类的非抽象方法可以重载为抽象方法(183页,孙为琴 面向对象)

多态的特征:               

                               1. 对于一个引用类型的变量,编译器按照他申明的类型处理

                               2. 对于一个引用类型的变量,运行时java虚拟机按照他实际引用的对象处理

                               3. 在运行时环境中,通过引用变量来访问所应用对象的方法和属性时,采用如下绑定规则:实例方法与引用变量实际引用的对象的方法绑定(既实例方法绑定其对象);静态方法与引用变量所声明的类型的方法绑定(既静态方法绑定起引用变量的类型);成员变量(包括静态变量和实例变量)与引用变量所声明的类型的成员变量绑定(既属性绑定期引用变量的类型)

继承的特征: 继承关系最大的弱点是打破了封装,子类能够访问父类的实现细节,子类与父类之间紧密耦合,子类缺乏独立性,从而影响子类的可维护性。为了尽可能的避免这一缺陷,应该遵循以下原则:

                                1. 精心设计专门用来被继承的类,继承树的抽象出比较稳定

                                2. 对于父类中不允许被覆盖的方法,采用final修饰符来禁止被子类覆盖

                                3. 对于不是专门用来被继承的类,禁止被继承

                                4. 休闲考虑用组合关系提高代码的 可重用性
分享到:
评论

相关推荐

    [Java]重载,重写以及继承,多态的区

    在Java编程语言中,重载、重写、继承与多态是四个非常核心的概念,它们在面向对象编程中扮演着至关重要的角色。接下来,我们将详细探讨这些概念,并通过实例加以说明。 ### 重载(Overload) 重载是指在同一个类中...

    Java基础入门教程 第4章 继承和多态(共36页).ppt

    在Java中,多态主要体现在方法的重写(Override)和重载(Overload)。方法重写是指子类中定义了与父类同名且参数列表相同的方法,但方法体不同,这使得子类对象可以调用到自己特有的实现。而方法重载则是指在同一个...

    学习Java程序入门-面向对象之封装,继承,多态(下).docx

    在 Java 中,多态可以通过使用 override 和 overload 关键字来实现。例如,一个子类可以重写父类的方法,或者提供多个相同名称的方法,但是这些方法的参数列表不同。 结论 本文对 Java 面向对象编程的三大特性:...

    java实验报告(2)-多态和继承

    在Java中,多态主要体现在方法的重写(Override)和方法的重载(Overload)。重写是指子类对父类的虚方法给出自己的实现,而方法重载则是在同一类中定义多个同名但参数列表不同的方法。 - **方法的重写(Override...

    Java中的继承和多态.pdf

    在Java中,多态主要体现在方法重写(Override)和方法重载(Overload)。 - **方法重写**:子类可以重写父类的非私有方法,提供自己的实现。这样,当使用父类引用指向子类对象时,调用的是子类的重写方法,实现动态...

    学习笔记:抽象封装、继承、多态.doc

    ### 学习笔记: 抽象封装、继承、多态 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。对象是由数据(即字段或属性)和对这些数据进行...

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

    - **重载(Overload)**:在同一个类中可以有多个同名但参数列表不同的方法,这是编译时的多态,系统会根据传入参数的类型和数量选择合适的方法执行。 2. **继承**是类之间的关系,子类继承父类,获取其属性和方法...

    继承与多态及其他方法的使用

    继承与多态是面向对象编程中的核心概念,它们在Java等面向对象编程语言中有着广泛的应用,对于企业级开发人员来说,理解和掌握这两个概念至关重要。 继承是类与类之间的一种关系,一个类(子类)可以继承另一个类...

    java 重载(overload)与重写(override)详解及实例

    Java中的重载(Overload)和重写(Override)是两个重要的面向对象概念,它们都是实现多态的方式,但有着本质的区别。 **重载(Overload)** 重载发生在同一类或具有继承关系的类中,它允许创建多个同名方法,但这些方法...

    继承多态重载与接口PPT学习教案.pptx

    总结,这个PPT学习教案涵盖了Java中关于继承、多态、覆盖、重载、构造函数重载、内部类与匿名类以及接口的基本概念和使用,这些都是Java面向对象编程的基础,对于理解Java编程模式和设计模式至关重要。通过学习这些...

    java多态机制

    本文将详细介绍Java中的多态机制,包括重写、重载、子类与父类的继承以及Java多态的应用等方面。 #### 二、多态的定义与重要性 多态性来源于希腊语“polymorphism”,意指“多种形式”。在面向对象编程中,多态是...

    Java overload和override的区别分析

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

    JAVA语言程序设计-第七章 类的封装、多态和继承

    1. **编译时多态(静态多态)**:主要通过方法重载(Overload)实现,即在同一个类中可以有多个同名但参数列表不同的方法。 2. **运行时多态(动态多态)**:基于继承和方法重写,通过父类引用指向子类对象,调用被...

    Override-Overload

    在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的重复使用,但是其本质含义、作用以及应用场景有着明显的区别。 #### 一、Override(方法重写) *...

    java 中继承和多态详细介绍

    Java中的继承和多态是面向对象编程的两个核心概念,它们极大地增强了代码的复用性和灵活性。在这篇文章中,我们将深入探讨这两个主题。 首先,我们来看一下继承。继承是类与类之间的一种关系,其中一个类(子类)...

    Java基础多态PPT学习教案.pptx

    在Java中,多态主要体现在方法的重写(Override)和重载(Overload)上。 6. **多态的好处**:多态能够提高程序的灵活性,使得代码更具有一般性,减少代码的修改和维护。当需要增加新的子类时,无需修改父类或调用...

    qfedu多态 Object,final

    1. **继承的语法**:在Java中,实现继承的关键字是`extends`。子类通过继承父类可以获得父类的所有非私有的成员变量和方法,具体语法为: ```java public class 子类名 extends 父类名 { // 子类中的代码 } ```...

    使用Java实现面向对象编程理论贯穿案例与上机贯穿案例(Java OOP).rar

    4. **多态**:多态是指同一种行为可以有不同的表现形式,具体体现在方法重写(Override)和方法重载(Overload)。通过多态,我们可以编写更灵活、更具扩展性的代码。 接下来,压缩包中的"理论贯穿案例"部分可能...

    使用Java面向对象编程

    在Java中,多态分为编译时多态(方法重载)和运行时多态(方法重写)。编译时多态是通过方法签名的不同来实现,而运行时多态是通过对象的引用调用子类重写的方法来体现。Java的向上转型和接口也是实现多态的重要手段...

Global site tag (gtag.js) - Google Analytics