`
seaizon
  • 浏览: 139436 次
  • 性别: 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方法继承、方法重载、方法覆盖小结.doc

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

    Java 中方法的重载与覆盖

    方法的重载与覆盖 发生重载的条件: 1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), ...

    java学习笔记 继承 重载 覆盖

    java相关知识的学习笔记,个人整理,里面涵盖:继承,接口,重载,覆盖,final等等的知识点

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

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

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

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

    重载与覆写/重写的区别

    (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。  调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。 (3)...

    java课件06Java的继承与多态.ppt

    Java继承和多态 Java中的继承和多态是面向对象程序设计的两个重要特性。继承是一种由已有的类创建新类的机制,通过继承,可以先创建一个公有属性的一般类,然后根据一般类再创建一个具有特殊属性的新类。新类继承...

    继承和接口和java访问权限修饰符总结.doc

    继承是 Java 中的一种机制,允许子类继承父类的属性和方法,並且可以对父类的方法进行重写或重载。动态绑定是指在运行时确定方法的调用,而不是在编译时。多态性是通过继承和方法重写来实现的。 一、继承 继承是 ...

    Java重写与重载(区别与用途)

     Java 中重写又叫覆盖,主要是指继承(extends)父类或者实现(implements)接口时将父类或者接口中已经存在的方法进行重新定义。重写的方法在父类或者接口中必须存在。  注意:后文的重写方法与覆盖方法同义 ...

    解析Java继承中方法的覆盖和重载

    主要介绍了Java继承中方法的覆盖和重载的详细概念及用法,非常的实用,这里推荐给大家,有需要的小伙伴可以参考下。

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

    Java继承与多态知识点 Java继承与多态是面向对象编程语言的重要概念,本文将对Java继承与多态进行详细的介绍和解释。 一、继承的含义 继承实际上是存在于面向对象程序中的两个类之间的一种关系。当一个类获取另一...

    java简答题

    4-2 方法的重载与方法的覆盖分别代表什么含义? 方法的重载:在同一个类中定义多个同名的不同形态方法; 方法的覆盖:在子类中对父类定义方法的重新定义,在子类中将隐藏来自父类的同形态方法。 4-3 Java类的继承有...

    Java源码小合集:继承和多态相关的例子.rar

    继承和多态的相关Java源码下载,比较散,像覆盖和重载、对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏、调用父类的方法...

    Java开发技术大全(500个源代码).

    stupid.java 试图覆盖最终方法的类,它有错误 Sub.java 一个简单的子类 Super.java 一个基类 testOverload.java 测试方法的重载示例1 testOverload_1.java 测试方法的重载示例2 testOverload_2.java 测试方法...

    java面试题总结.docx

    重写是指子类继承了父类的方法并且覆盖了子类的方法。 方法重载的规则: a.方法名一致,参数列表中的顺序,类型,个数不同 b.重载的方法与返回值无关 c.重载可以抛出不同的异常,可以有不同的修饰符 方法重写的命名...

    黑马程序员Java基础视频辅导班课堂笔记总结Day08

    子父类中覆盖的方法也可以存在重载(子类同名方法有自己特有的表现形式时)。 在使用继承时,我们需要注意,子类不能覆盖父类中私有方法,即使与父类中私有方法一模一样,也只是在子类中定义了一个方法而已,并不是...

    java 面试题 总结

     final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的...

    java面试题

    Overload和Override的区别。Overloaded的方法是否可以...4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

    《Java语言程序设计》答案.pdf

    本资源提供了 Java 语言程序设计的答案,涵盖了多态性、方法的重载和覆盖、throw/throws 的关系和区别、final 和 finally 的区别和作用等知识点。 一、多态性 多态性是指允许不同类的对象对统一消息做出响应。多态...

Global site tag (gtag.js) - Google Analytics