`

java中静态变量和静态方法的在多态时会有所不同 (本文中代码注释是重点)

    博客分类:
  • java
阅读更多
/**

*仔细阅读并查看输出,区分不同

*注意,静态变量及静态方法的引用跟声明变量及方法时所用的类有关,即多态有关。

*声明时用父类进行声明,调用时则会调用父类的静态方法及静态变量;

*声明时用子类进行声明,或对已用父类声明过的引用作强制类型转换,调用时则会调用子类的静态方法及静态变量。

**/
public class Static_ {
 
 static String _var="这是父类的静态变量";
    public Static_() {
    }
    public static void static_method(){
     System.out.println("这是父类静态方法的输出!");
    }
   
   
}
class Static_sub extends Static_{
 static String _var="这是父类的静态变量的覆盖变量";
 public static void static_method(){
  System.out.println("这是父类静态的方法的覆盖输出!");
 }
}
class test{
 public static void main(String args[]){
  //以下是类调用
  System.out.println("----以下是类调用:");
  Static_.static_method();
  Static_sub.static_method(); 
  System.out.println("\n");
   
  Static_ sup=new Static_();
  Static_sub sub=new Static_sub();
  Static_ sup_sub=new Static_sub();
  Static_sub sup_sub2=(Static_sub)sup_sub;
  System.out.println("\n"); 
   
  //以下是变量的输出
  System.out.println("----以下是变量的输出:");
  System.out.println(sup._var);
  System.out.println(sub._var);
  System.out.println(sup_sub._var);
  System.out.println(sup_sub2._var);
  System.out.println("\n"); 
    
  //以下是方法的输出
  System.out.println("----以下是方法的输出:");
  sup.static_method();
  sub.static_method();
  sup_sub.static_method();
  sup_sub2.static_method();
  
 }
}

***********************************************************************

---------------------------------------------------

以下为上面程序代码的输出:

---------------------------------------------------

----以下是类调用:
这是父类静态方法的输出!
这是父类静态的方法的覆盖输出!




----以下是变量的输出:
这是父类的静态变量
这是父类的静态变量的覆盖变量
这是父类的静态变量
这是父类的静态变量的覆盖变量


----以下是方法的输出:
这是父类静态方法的输出!
这是父类静态的方法的覆盖输出!
这是父类静态方法的输出!
这是父类静态的方法的覆盖输出!

**************************************************************************
分享到:
评论

相关推荐

    java之中的静态变量与静态方法的继承与覆盖问题.doc

    Java 语言中的静态变量和静态方法是类级别的成员,它们不属于任何实例,而是直接关联到类本身。在探讨继承和覆盖的问题时,这两者有着不同的行为特性。 首先,让我们来看看静态变量。静态变量(也称为类变量)是...

    Java 语言程序设计:第5章接口多态.ppt

    内部类是 Java 语言中的一种嵌套类,它可以访问外部类的成员变量和方法。内部类可以用来实现多态,例如,声明一个内部类 Shape2D,可以利用它来实现二维的几何形状类 Circle 和 Rectangle。 5.7 本章小结 本章主要...

    Java语言程序设计:JAVA_6-接口与多态、内部类.ppt

    一个类可以同时实现多个接口,在实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与接口中的方法完全一致,修饰符必须加上public,删除abstract关键字。 接口的目的是规定一些重要的方法,即将一些重要...

    Java中的成员变量

    成员变量,也称为类变量或实例变量,是定义在类中的变量,但不在任何方法、构造器或代码块内部。这些变量与类的对象紧密相关,用来描述对象的状态或功能。 成员变量有两种主要类型:实例变量和静态变量。 1. 实例...

    java多态实验

    - 静态多态(Static Polymorphism):主要通过方法重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。 - 动态多态(Dynamic Polymorphism):主要通过方法重写(Overriding)实现,子类...

    java继承与多态

    在Java中,多态主要通过继承和方法重写实现。 **3.2 方法重写** 方法重写允许子类重新定义父类的方法。这样,当一个对象被当作父类处理时,实际调用的是子类的方法实现。方法重写的规则包括: - 子类方法的签名...

    java代码笔记2010-05-31:继承this()的使用多态;单态;静态初始化;==比较的是地址;参数传递的是个值的拷贝还是引用的传递;循环菱形

    关于静态初始化,Java类在加载时会执行静态初始化块,用于设置静态变量或执行一次性初始化操作。这与实例初始化块(非静态)不同,后者在创建新对象时执行。 然后是`==`运算符。在Java中,`==`用于比较基本类型值的...

    《java面向对象程序设计-继承和多态》教案.doc

    面向对象编程是Java的核心特性,本教程主要涵盖了三个关键概念:封装、继承和多态,以及相关的访问修饰符和方法修饰符。 封装是面向对象编程的基础,它涉及到将数据(属性)和操作这些数据的方法(行为)组合在一个...

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    **解析**:在这个例子中,`add` 方法接收的是一个基本类型的参数,因此当 `score` 被传入 `add` 方法时,实际上传递的是一个值的拷贝。在 `add` 方法内部对 `score` 进行操作并不会影响到主函数中的 `score` 值。...

    关于Java多态实例共3页.pdf.zip

    在Java中,多态性(Polymorphism)允许我们使用一个接口来引用不同类型的对象,使得代码更具通用性和可扩展性。这允许我们编写出更加灵活、易于维护的程序,同时减少了代码的重复。 首先,我们需要理解多态性的两种...

    Java面向对象的3大特征之多态

    方法重载是静态多态的一种形式,它指的是在同一个类中定义多个同名方法,但是方法的参数列表不同。在编译时,编译器根据参数的不同来确定调用哪个方法。 对象多态的实现案例可以更直观地理解这一点。在没有多态的...

    Java语言基础入门教程 Java开发编程基础课程 第9章 深度了解变量和方法 共13页.pptx

    根据变量所处的位置和作用域的不同,Java中的变量可以分为两大类:成员变量和局部变量。 1. **成员变量** - **定义与作用范围**: - 成员变量是在类中定义的变量。 - 成员变量的作用范围是整个类的所有方法。 -...

    13.java学习第十三章——方法覆盖和多态.pdf

    在这个例子中,尽管`myPet`是`Animal`类型的引用,但由于它实际上引用的是一个`Dog`对象,所以在调用`speak()`方法时会执行`Dog`类中的实现,这就是多态的基本工作原理。 总结来说,方法覆盖和多态是Java中非常重要...

    Java继承,多态,接口,常量,代码块

    在Java编程语言中,继承、多态、接口、常量以及代码块是核心概念,它们构建了面向对象编程的基础。让我们逐一深入理解这些知识点。 **继承(Inheritance)** 继承是面向对象编程的一个重要特性,它允许一个类(子类...

    java 继承和多态的讲解

    Java中的继承和多态是面向对象编程的重要概念,它们为代码的复用、扩展和维护提供了便利。在Java中,类的继承允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的共享和结构的层次化。这使得子类...

    java 三大特性--封装、继承和多态理解

    在Java中,多态分为编译时多态(静态多态)和运行时多态(动态多态)。编译时多态主要通过方法重载实现,即在同一个类中定义多个同名但参数列表不同的方法。运行时多态则基于方法重写(override),子类可以覆盖父类...

    Java相关知识的学习(关键字)(多态)

    12.3 修饰方法:当`final`用于修饰方法时,该方法不能在子类中被重写。这样可以保证特定的实现不被改变,确保代码的行为一致性。 接下来,我们讨论多态性(Polymorphism)这一核心的面向对象特性。 5. 多态性:在...

Global site tag (gtag.js) - Google Analytics