`

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

    构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰符和方法修饰符 继承 继承的...

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

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

    Java多态中的动态绑定与静态绑定

    1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体对象的类型进行绑定,或者说是只有对象在虚拟机中创建了之后,才能确定方法属于哪一个对象,与引用变量实际引用的对象绑定,调用重写的方法,由...

    Java 继承 多态方面的实例源码.rar

    Java 继承 多态方面的实例源码,内容方面涉及对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏等。。。

    java技术学习文档.docx

    Java的代码块包括静态代码块、实例代码块和构造代码块,它们会在程序运行时被执行。Java中的异常处理机制可以帮助开发人员避免程序运行时出现的错误。 Java编程环境 Java编程环境包括Java开发工具(IDE)和Java开发...

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

    showStaicVar.java 演示静态变量的使用 staticBlock.java 演示静态块的使用 staticVar.java 定义静态变量 supplyTest.java 对象作为静态成员使用示例 trySwap.java 试图交换两个形参的值 useOnlyTest.java ...

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

    12. final关键字 12.1修饰类 12.2修饰变量 12.3修饰方法 五、多态 1.理解 2.... 3.多态访问成员的特点 3.1成员变量 3.2成员方法 3.3构造方法 3.4静态成员 4.多态的好处 5.多态的缺点 6. instanceof关键字

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.8.3 在方法中调用方法 179 7.9 构造方法(Constructor) 181 7.9.1 构造(Constructor)方法初探 181 7.9.2 如何使用构造方法 182 7.9.3 留个无参数的构造方法——给重要属性赋初始值 183 7.9.4 在构造方法中...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.8.3 在方法中调用方法 179 7.9 构造方法(Constructor) 181 7.9.1 构造(Constructor)方法初探 181 7.9.2 如何使用构造方法 182 7.9.3 留个无参数的构造方法——给重要属性赋初始值 183 7.9.4 在构造方法中...

    java技术-让学员少走弯路

    全面解析java技术,让...讲解了Java中的构造、重载、this和super变量、静态变量、Java中的常量、继承、多态。 Java中包的概念,类的说明符、方法的说明符、对象的销毁(JVM垃圾回收器的演示),Java中接口理解与掌握。

    java核心基础汇总.docx

    同时,Java也是一种静态类型语言,需要在编译时指定变量的类型。 数据类型:Java中有基本数据类型和引用数据类型。基本数据类型包括int、long、float、double等,而引用数据类型包括类、接口、数组等。 运算符:Java...

    JAVA面试题最全集

    静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法? 50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52....

    java 面试题 总结

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

    廖雪峰 Java 教程.doc

    静态字段和静态方法 包 作用域 classpath和jar 模块 Java核心类 字符串和编码 StringBuilder StringJoiner 包装类型 JavaBean 枚举类 BigInteger BigDecimal 常用工具类 异常处理 Java的异常 捕获...

    Java-多态与接口综合案例_USB接口设计

    多态用一句话概括就是:事物在运行过程中存在不同的状态。。多态的存在有三个前提: 1.要有继承关系 2.子类要重写父类的方法 3.父类引用指向子类对 综合实际应用,我们做出以下总结: ① 成员变量 编译看左边(父类),...

    java面试宝典

    33、静态变量和实例变量的区别? 11 34、是否可以从一个static 方法内部发出对非static 方法的调用? 11 35、写clone()方法时,通常都有一行代码,是什么? 11 36、GC 是什么? 为什么要有GC? 11 37、垃圾回收的优点...

    Java入门教程(微学苑)-part1

    4.10 Java static关键字以及Java静态变量和静态方法 72 4.11 static 的内存分配 73 4.12 静态方法 74 4.13 静态初始器(静态块) 75 4.14 静态导入 75 4.15 Java final关键字:阻止继承和多态 76 4.16 类与类之间的...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义了一个 Point 类 ,并且声明了它的两个变量 x、y 坐标 ,同时实现 init()方法 对 x、y 赋初值 。 class Ponit { int...

    Java 基础核心总结 +经典算法大全.rar

    获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法反射的应用场景 Spring 的 IOC 容器反射 + 抽象工厂模式 JDBC 加载数据库驱动类反射的优势及缺陷 增加程序的...

Global site tag (gtag.js) - Google Analytics