`
seaizon
  • 浏览: 143824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java方法继承、方法重载、方法覆盖小总结(转)

    博客分类:
  • java
阅读更多
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)成员变量(包括静态和实例变量)与引用变量所声明的类型的成员变量绑定,属于静态绑定     

class Super {
    static int stat = 1;
    int nonStat = 2;
	
    static int statMethod(){
        return 3;
    }
	
    int nonStatMethod(){
        return 4;
    }
}
 
public class Sub extends Super {
    static int stat = 10;
    int nonStat = 20;
 
    static int statMethod(){
        return 30;
    }
	
    int nonStatMethod(){
        return 40;
    }
 
    public static void main(String[] args) {
        Super s = new Sub();
        System.out.println("Static is " + s.stat);
        System.out.println("Non-Static is " + s.nonStat);
        System.out.println("Static method is " + s.statMethod() );
        System.out.println("Non-Static method is " + s.nonStatMethod() );
	
        Sub sub = (Sub)s;
        System.out.println("Static is " + sub.stat);
        System.out.println("Non-Static is " + sub.nonStat);
        System.out.println("Static method is " + sub.statMethod() );
        System.out.println("Non-Static method is " + sub.nonStatMethod() );	
    }
}

输出结果是:

Static is 1
Non-Static is 2
Static method is 3
Non-Static method is 40
Static is 10
Non-Static is 20
Static method is 30
Non-Static method is 40     
                                                                                                   

6、继承的利弊和使用原则:

    * 集成数的层次不可太多
    * 集成数的上层为抽象层

            (1)定义了下层子类都用友的相同属性和方法,并且尽可能默认实现,从而提高重用性
            (2)代表系统的接口,描述系统所能提供的服务

    * 继承关系最大的弱点:打破封装
    * 精心设计专门用于被继承的类

            (1)对这些类必须提供良好的文档说明
            (2)尽可能的封装父类的实现细节,把代表时间细节的属性和方法定义为private类型
            (3)如果某些实现细节必须被子类访问,定义为protected类型
            (4)把不允许子类覆盖的方法定义为final类型
            (5)父类的构造方法不允许调用可被子类覆盖的方法
            (6)如果某些类不是专门为了继承而设计,那么随意继承它是不安全的

原文:http://www.iteye.com/topic/208202
分享到:
评论

相关推荐

    Java方法继承、方法重载、方法覆盖总结

    ### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...

    Java方法继承、方法重载、方法覆盖小结.doc

    Java 方法继承、方法重载、方法覆盖、小结 Java 编程语言中,方法继承、方法重载、方法覆盖是三个重要的概念,它们在软件开发中发挥着重要作用。 方法继承 方法继承是 Java 编程语言的一种机制,允许一个类继承另...

    Java 中方法的重载与覆盖

    ### Java中的方法重载(Overloading)与方法覆盖(Overriding) #### 方法的重载(Overloading) ...总结来说,在Java中正确理解和应用方法重载和方法覆盖是非常重要的,这有助于编写更加灵活和高效的代码。

    java学习笔记 继承 重载 覆盖

    Java编程语言的学习涉及众多核心概念,本篇笔记主要探讨了几个关键知识点:继承、重载和覆盖。首先,我们从Java环境配置开始,确保能够正确地运行Java程序。在Windows系统中,需要设置环境变量PATH,指向JDK安装目录...

    java中函数重载与覆盖例子

    总结来说,函数重载和覆盖是Java中实现多态性的两种主要方式。重载允许我们在同一类中创建多个同名但参数不同的方法,而覆盖则允许子类定制父类的行为,实现特定于子类的功能。理解并熟练运用这两个概念对于编写灵活...

    java中的方法重载和覆盖的区别宣贯.pdf

    "Java中的方法重载和覆盖的区别" Java中的方法重载和覆盖是两个常见的概念,但很多开发者容易混淆这两个概念。在Java中,方法重载(Overloading)和方法覆盖(Overriding)都是实现多态性的手段,但它们之间有着...

    类继承方法重载

    通过实践这个小程序,你可以更好地理解如何在实际项目中应用类继承和方法重载,以及它们如何帮助解决特定问题。这将有助于提升你的编程技巧,特别是在设计复杂系统时,能够更加熟练地利用面向对象的设计原则和技巧。...

    继承与方法的重载学习代码

    在Java编程语言中,继承和方法的重载是两个核心概念,它们对于构建可扩展、模块化的代码至关重要。本文将详细解析这两个概念及其在实际编程中的应用。 首先,让我们了解继承(Inheritance)。继承是面向对象编程的...

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...

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

    总结来说,重载允许我们根据参数的不同来选择合适的方法,重写使得子类可以提供对父类方法的具体实现,继承则实现了代码的复用,而多态则是实现接口与实现类之间的灵活转换,增强了程序的可扩展性和可维护性。

    JAVA方法覆盖与重载的区别.doc

    Java中的方法重载(Overloading)和方法覆盖(Overriding)是面向对象编程中的两个重要概念,它们在处理多态性方面发挥着关键作用。理解这两者的区别对于编写高效的Java代码至关重要。 首先,我们来看方法重载。...

    JAVA的重载和覆盖(论文)

    JAVA中的重载(Overload)和覆盖(Override)是面向对象编程中两个核心概念,尤其在多态性的体现上扮演着重要角色。这两者虽然在名称上相似,但在实际应用和概念理解上有着本质的区别。 ### 重载(Overload) 重载是在同...

    java中的继承(子类调用父类构造方法还不懂).doc

    Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...

    JAVA中的继承学习总结

    在Java中,多态性通常通过方法覆盖和方法重载来实现。 - **方法覆盖(Override)**:子类中定义与父类中相同签名的方法,以改变或增强父类的行为。 - **方法重载(Overload)**:在同一个类中,定义多个方法具有相同的...

    java方法的覆盖java方法的覆盖.doc

    在Java中,当子类继承父类,并且子类定义了一个与父类同名、同参数列表的方法时,就发生了方法覆盖。这使得子类对象在调用这个方法时,会执行子类自定义的行为,而不是父类的方法。 方法覆盖的规则和注意事项如下:...

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的概念。它们虽然只有一字之差,但其实质却大相径庭。理解这两者的不同对于深入掌握Java语言至关重要。 ### 一、重载(Overloading...

    Java重写重载线程

    ### Java中的方法重载与重写以及线程概念详解 #### 一、方法重载(Overloading) 在Java中,**方法重载**是指在同一个类中定义多个具有相同名称但参数列表不同的方法。这里提到的“参数列表不同”不仅包括参数的...

    java继承和多态PPT教案学习.pptx

    Java继承和多态PPT教案学习 本PPT教案主要讲解了Java中的继承和多态机制,包括继承、里式代换原则、多态和动态绑定、方法重载、重载构造函数和方法覆盖等概念。 继承是面向对象编程的基本机制之一,允许一个类继承...

    java程序设计-第5章-继承、多态、重载与接口

    Java程序设计中的继承、多态、重载与接口是面向对象编程的重要概念,它们构成了Java类体系的基础。让我们深入探讨一下这些主题。 1. **继承(Inheritance)** 继承是Java中一个核心特性,它允许一个类(子类)继承...

    关于JAVA继承的讲解

    Java 继承是面向对象编程中的一个重要概念,它允许一个类(子类)从另一个类(父类)中继承属性和方法,从而实现代码的复用和类的层次结构。这种方式使得子类能够继承父类的特性,同时可以添加自己的特性和功能,而...

Global site tag (gtag.js) - Google Analytics