- 浏览: 388868 次
文章分类
最新评论
-
小尜:
写的很详细,也很简单,一看就懂。多谢啦。
关于工厂模式和spring的IOC -
fjjiaboming:
代码排版!!!!!
JDBC事务和JTA (XA)事务 -
fjjiaboming:
排版有问题吗? 望交流.
做人有三个层次 -
fjjiaboming:
看来数据库连接池 必须用JNDI 注册在容器 , 对吗?
JDBC事务和JTA (XA)事务 -
fd1803:
SSL工作原理:http://www.wosign.com/B ...
SSL(Server Socket Layer)简介
首先我们提供两个类,基类为Parent,派生类为Child。在Parent中我们提供两个方法,一个是静态方法staticMethod(),一个是非静态方法nonStaticMethod()。在Child类中我们覆盖着两个方法。
- class Parent{
- public void nonStaticMethod() {
- System.out.println("Parent's Non-Static Method is Called");
- }
- public static void staticMethod() {
- System.out.println("parent's static method is called");
- }
- }
- class Child extends Parent{
- public void nonStaticMethod() {
- System.out.println("child's non-static method is called");
- }
- public static void staticMethod() {
- System.out.println("child's static method is called");
- }
- }
在Test类中我们分别使用Parent p1 = new Parent(),Parent p2 = new Child(),Child c = new Child() 得到三个实例,并分别调用静态方法和非静态方法,我们来看程序的运行结果 在Test类中我们分别使用Parent p1 = new Parent(),Parent p2 = new Child(),Child c = new Child()得到三个实例,并分别调用静态方法和非静态方法,我们来看程序的运行结果
- public class Test{
- public static void main(String args[]) {
- Parent p1 = new Parent();
- Parent p2 = new Child();
- Child c = new Child();
- System.out.print("Parent.static: ");
- Parent.staticMethod();
- System.out.print("p1.static: ");
- p1.staticMethod();
- System.out.print("p2.static: ");
- p2.staticMethod();
- System.out.print("p1.nonStatic: ");
- p1.nonStaticMethod();
- System.out.print("p2.nonStatic: ");
- p2.nonStaticMethod();
- System.out.print("Child.static: ");
- Child.staticMethod();
- System.out.print("c.static: ");
- c.staticMethod();
- System.out.print("c.nonStatic: ");
- c.nonStaticMethod();
- }
- }
程序的运行结果为:
Parent.static: parent's static method is called
p1.static: parent's static method is called
p2.static: parent's static method is called
p1.nonStatic: Parent's Non-Static Method is Calle
p2.nonStatic: child's non-static method is called
Child.static: child's static method is called
c.static: child's static method is called
c.nonStatic: child's non-static method is called
值得注意的是p2实际上是一个Child的类型的引用,然而在调用静态方法的时候,它执行的却是父类的静态方法,而不是Child的静态方法,而调用 p2的非静态方法的时候执行的是Child 的非静态方法,为什么呢?原因是静态方法是在编译的时候把静态方法和类的引用类型进行匹配,而不是在运行的时候和类引用进行匹配。因此我们得出结论:当我们在子类中创建的静态方法,它并不会覆盖父类中相同名字的静态方法。
Test类中我们分别使用Parent p1 = new Parent(),Parent p2 = new Child(),Child c = new Child() 得到三个实例,并分别调用静态方法和非静态方法,我们来看程序的运行结果 在Test类中我们分别使用Parent p1 = new Parent(),Parent p2 = new Child(),Child c = new Child()得到三个实例,并分别调用静态方法和非静态方法,我们来看程序的运行结果评论
</quote>
这样的结论是有点不正解吧.
1、Parent p2 = new Child();
2、Child c = new Child();
方式1涉及塑型,而静态方法是属于类的,也就是在类初始化就分配了。
方式2是实例化类,实例化后,不管是静态方法,还是非静态方法。当然就是对象的了。
发表评论
-
[软件人生]什么是程序员
2008-09-06 19:18 1115一个大专学历想做程序员的朋友和我的对话,很短,我觉得,至少能说 ... -
软件公司怎么消亡的?
2008-09-03 23:45 1043最近读了一篇非常有趣的文章,原文是英文,和大家共享,其大概意思 ... -
世上没有B/S系统,只有B系统和S系统. (转载)
2007-10-28 23:02 1141世上没有B/S系统,只有B ... -
从原则出发的软件开发(转载)
2007-06-24 18:57 1201原文:http://gocom.primeton.co ... -
关于java 的methode的内存区域问题
2007-06-12 14:49 1390用java这么长时间了,对于static method 大家都 ... -
关于继承初始化的精典试题 (转载)
2007-06-07 15:50 1228一、 class First { void tt() { ... -
关于synchronized
2007-05-30 21:17 1134synchronized 关键字,它 ... -
关于Connection的问题
2007-05-29 09:48 1166最近在看Datasource时候想到,datasource是数 ... -
0碎的知识
2007-05-26 15:57 11281.软件设计模式针对的是代码片段的复用,而SOA实施中讨论的是 ... -
关于工厂模式和spring的IOC
2007-05-23 18:35 7994原文转之: http://gocom.primeton.com ... -
appfuse中/mainMenu.html的定向问题
2007-05-08 22:26 1560找了半天,终于找到了 : http://blog.matr ... -
JSTL介绍
2007-05-02 14:07 2894使用JSTL改进JSP来简化网 ... -
Robbin推荐的java类书籍
2007-04-30 20:54 1320http://www.iteye.com/article/52 ... -
候捷谈Java反射机制
2007-04-08 14:19 1232Java反射机制<o:p></o:p> ... -
JDBC事务和JTA (XA)事务
2007-04-03 21:10 21890事务简介 一般情况下,J2EE应用服务器支持JDBC事务、 ... -
inline函数的用法小议(转载)
2007-03-14 15:22 8497inline函数的用法小议( ... -
关于java的JIT知识
2007-03-14 13:42 15947刚看Practical java ,对jit ... -
当前Java软件开发中几种认识误区
2007-03-12 21:07 1287当前Java软件开发中几种 ... -
在websphere上安装动态高速缓存监控器
2007-02-07 20:49 3603动态高速缓存的安装和配置 这一节探讨如何安装和配置动态高速缓存 ... -
SSL(Server Socket Layer)简介
2007-02-07 19:52 2157SSL(Server Socket Layer)简介 在网络 ...
相关推荐
Java 中静态方法和非静态方法的区别 Java 作为一种功能强大、可靠性高、跨平台的编程语言,广泛应用于企业级应用开发、移动应用开发、云计算、大数据处理等领域。了解静态方法和非静态方法的区别是 Java 编程的基础...
### Java之中的静态变量与静态方法的继承与覆盖问题 #### 静态变量与静态方法的基本概念 在Java编程语言中,静态变量(也称为类变量)和静态方法(也称为类方法)是由`static`关键字修饰的成员变量和成员方法。...
Java中的方法调用分为两种主要类型:静态方法调用和非静态(实例)方法调用。静态方法调用是指在不创建对象的情况下直接通过类名来调用的方法,它与类相关联,而不是类的实例。这种方式在处理与类相关的属性或不需要...
Java中的所有非静态方法(包括实例方法和覆盖的方法)都是动态绑定的。这意味着,即使在编译时我们使用的是父类引用,但在运行时,如果该引用指向的是子类的对象,那么将会调用子类重写的方法。这是多态性的基础,...
### Java方法继承、方法重载、方法覆盖总结 ...综上所述,方法继承、方法重载和方法覆盖是Java面向对象编程中的三个重要概念。正确理解和运用这些概念能够帮助开发者编写出更加灵活、高效和可维护的代码。
实例方法的覆盖发生在子类对父类的非静态方法进行重新定义的情况下。当子类对象调用这个方法时,如果子类有与父类相同名称和参数列表的方法,那么将会调用子类的方法,这就是多态性的一种体现。Java中的方法覆盖有...
此外,静态方法和非静态方法在多线程环境中的表现也不同。静态方法是线程安全的,除非它修改了类的静态变量,否则多个线程同时调用不会引起数据竞争问题。非静态方法则可能涉及到对象的状态,因此在多线程环境下需要...
当一个类(子类)继承另一个类(父类)时,子类会自动获得父类的所有非私有(public和protected)成员,包括字段和方法。这意味着子类可以访问并使用父类中的这些方法,而无需再次定义。这是实现代码复用和多态性的...
为了达到预期的重写效果,需要将静态方法改为非静态方法。这样,调用将基于对象的实际类型,而非编译时的类引用,从而实现动态绑定或晚绑定。例如: ```java class Dog { public void bark() { System.out.print...
4. 用 private 修饰的 static 成员变量和成员方法,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用),但是不能在其他类中通过类名来直接引用,这一点很...
在Java编程语言中,方法覆盖(Method Overriding)是一个核心概念,它允许子类重新定义父类中的非私有方法。这个"Java 实例 - 方法覆盖源代码-详细教程.zip"压缩包文件很可能是为了帮助学习者深入理解这一概念而准备...
Java API中文文档是Java开发者的重要参考资料,它详细阐述了Java平台标准版(Java SE)的各种类库、接口和方法。这两个版本,1.6和1.8,分别代表了Java发展过程中的两个重要里程碑。 首先,让我们关注"java_api_1.6...
Java 8 开始支持默认方法和静态方法。 **二、方法重写(Override)** 1. **定义**: 方法重写是指子类重新定义父类中的某个方法,保持方法名、参数列表和返回类型不变,但可以修改方法的实现。 2. **重写规则**...
Java 语言中的修饰词可以用来控制成员的访问权限、确保类和方法的不可变性、定义抽象类和抽象方法、调用 native 库、确保浮点计算的精度和可移植性、确保多线程环境中的安全执行等等。正确地使用修饰词可以提高 Java...
类方法(静态方法)同样可以被类名直接调用,它无法访问非静态成员,因为静态方法与特定实例无关。 封装是面向对象编程的重要特性,它通过访问控制修饰符(public、protected、default、private)来保护数据并控制...
PowerMock是一个强大的扩展工具,它可以与Mockito、EasyMock等主流Mock框架结合,允许我们模拟静态方法、构造器、final类和方法、删除静态初始化器等。 标题“使用PowerMock来Mock静态函数”指的是如何利用...
在Java中,我们可以为一个类定义多个静态工厂方法,每个方法根据其名称和参数来区别,以创建具有特定状态的对象。例如: ```java class People { String name; int age; int weight; public static People get...
3. 静态方法不能被非静态方法覆盖。 4. 不同类间的非静态方法调用必须通过对象实例进行。 理解这些规则对于编写清晰、可维护的Java代码至关重要。正确使用静态和非静态方法可以帮助优化程序结构,提高代码的复用性...
Java中的方法覆盖(Override)和隐藏(Hiding)是面向对象编程中的两个重要概念,它们涉及到多态性和运行时类型识别(RTTI)。在Java中,这两种情况在处理继承关系时会产生不同的行为。 1. **方法覆盖(Override)*...