- 浏览: 30736 次
- 性别:
- 来自: 广州
最近访客 更多访客>>
最新评论
-
DragCheng:
这标题亮了
深入研究java.long.Class类(转) -
油炸大龙虾:
这个标题害人啊,哎……
深入研究java.long.Class类(转)
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)如果某些类不是专门为了继承而设计,那么随意继承它是不安全的
原文:http://www.iteye.com/topic/208202
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内存溢出解析(转)
2010-01-13 15:16 758JAVA内存溢出解析 核心 ... -
Java的内存泄漏(转)
2010-01-13 14:36 416问题的提出 Java 的一个重要优点就是通过垃圾收集器(Ga ... -
JVM原理学习—— 类的初始化(转)
2010-01-05 16:53 623类的初始化工作,主 ... -
JVM原理学习 —— 虚拟机规范(转)
2010-01-05 16:51 970《Inside the JVM》一开始就指出,所谓“虚拟机”实 ... -
深入探索Java工作原理:JVM,内存回收及其他
2010-01-05 16:43 937深入探索Java工作原理: ... -
java里类的继承机制-成员变量(转)
2009-12-31 14:03 2174在网上看见一个关于java ... -
java里类的继承机制-构造方法(转)
2009-12-31 14:00 934这次我想深入探究以下java里类的继承机制。 我们知道,继承是 ... -
java 继承类 变量、静态变量、构造函数执行顺序(转)
2009-12-31 13:35 1997java 继承类 变量、静态变量、构造函数执行顺序 class ... -
map,set,list,等JAVA中集合解析
2009-12-30 15:51 1337map,set,list,等JAVA中集合 ... -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
2009-12-29 11:21 653两个都可以用于从 classpath 里面进行资源读取, c ... -
JTA和JDBC事务
2009-12-28 15:44 888JTA和JDBC事务(转) 一般情况下,J2EE应用服务器 ... -
深入研究java.long.Class类(转)
2009-12-27 23:13 981前言:Java的类库日益庞大,所包含的类和接口也不计其数。但其 ... -
Java关键字之native,strictfp,transient,volatile
2009-12-21 14:04 587Java关键字(keywords) abstrac ... -
javap的使用
2009-12-16 22:38 710javap简介 原文网址 http://www.javare ... -
JAVA 基本数据类型取值范围
2009-12-16 15:55 1230先看一段代码 public class ... -
Tomcat启动分析
2009-12-14 17:23 1440Tomcat启动分析 核心提示:用 文本编辑工具打开用于启动T ... -
servlet的介绍
2009-12-14 17:14 523servlet的介绍 关键字: servlet的介绍 在 e ...
相关推荐
### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...
Java 方法继承、方法重载、方法覆盖、小结 Java 编程语言中,方法继承、方法重载、方法覆盖是三个重要的概念,它们在软件开发中发挥着重要作用。 方法继承 方法继承是 Java 编程语言的一种机制,允许一个类继承另...
### Java中的方法重载(Overloading)与方法覆盖(Overriding) #### 方法的重载(Overloading) ...总结来说,在Java中正确理解和应用方法重载和方法覆盖是非常重要的,这有助于编写更加灵活和高效的代码。
Java编程语言的学习涉及众多核心概念,本篇笔记主要探讨了几个关键知识点:继承、重载和覆盖。首先,我们从Java环境配置开始,确保能够正确地运行Java程序。在Windows系统中,需要设置环境变量PATH,指向JDK安装目录...
总结来说,函数重载和覆盖是Java中实现多态性的两种主要方式。重载允许我们在同一类中创建多个同名但参数不同的方法,而覆盖则允许子类定制父类的行为,实现特定于子类的功能。理解并熟练运用这两个概念对于编写灵活...
"Java中的方法重载和覆盖的区别" Java中的方法重载和覆盖是两个常见的概念,但很多开发者容易混淆这两个概念。在Java中,方法重载(Overloading)和方法覆盖(Overriding)都是实现多态性的手段,但它们之间有着...
通过实践这个小程序,你可以更好地理解如何在实际项目中应用类继承和方法重载,以及它们如何帮助解决特定问题。这将有助于提升你的编程技巧,特别是在设计复杂系统时,能够更加熟练地利用面向对象的设计原则和技巧。...
在Java编程语言中,继承和方法的重载是两个核心概念,它们对于构建可扩展、模块化的代码至关重要。本文将详细解析这两个概念及其在实际编程中的应用。 首先,让我们了解继承(Inheritance)。继承是面向对象编程的...
Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...
总结来说,重载允许我们根据参数的不同来选择合适的方法,重写使得子类可以提供对父类方法的具体实现,继承则实现了代码的复用,而多态则是实现接口与实现类之间的灵活转换,增强了程序的可扩展性和可维护性。
Java中的方法重载(Overloading)和方法覆盖(Overriding)是面向对象编程中的两个重要概念,它们在处理多态性方面发挥着关键作用。理解这两者的区别对于编写高效的Java代码至关重要。 首先,我们来看方法重载。...
JAVA中的重载(Overload)和覆盖(Override)是面向对象编程中两个核心概念,尤其在多态性的体现上扮演着重要角色。这两者虽然在名称上相似,但在实际应用和概念理解上有着本质的区别。 ### 重载(Overload) 重载是在同...
Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...
在Java中,当子类继承父类,并且子类定义了一个与父类同名、同参数列表的方法时,就发生了方法覆盖。这使得子类对象在调用这个方法时,会执行子类自定义的行为,而不是父类的方法。 方法覆盖的规则和注意事项如下:...
在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的概念。它们虽然只有一字之差,但其实质却大相径庭。理解这两者的不同对于深入掌握Java语言至关重要。 ### 一、重载(Overloading...
### Java中的方法重载与重写以及线程概念详解 #### 一、方法重载(Overloading) 在Java中,**方法重载**是指在同一个类中定义多个具有相同名称但参数列表不同的方法。这里提到的“参数列表不同”不仅包括参数的...
重写只发生在继承关系中,子类方法必须声明为`@Override`(在Java中),以确保该方法确实覆盖了父类的相应方法。在运行时,如果对象是子类类型,即使引用的是父类类型,也会调用子类中重写的方法,这就是多态性的一...
Java程序设计中的继承、多态、重载与接口是面向对象编程的重要概念,它们构成了Java类体系的基础。让我们深入探讨一下这些主题。 1. **继承(Inheritance)** 继承是Java中一个核心特性,它允许一个类(子类)继承...
Java 继承是面向对象编程中的一个重要概念,它允许一个类(子类)从另一个类(父类)中继承属性和方法,从而实现代码的复用和类的层次结构。这种方式使得子类能够继承父类的特性,同时可以添加自己的特性和功能,而...