`
langgufu
  • 浏览: 2288602 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java静态变量和静态函数是否可以被继承,重写!

阅读更多
可以的,做个实验就可以证明了:
//Test.java
class A{
static int i=9;
static void print(){System.out.println(i);}
}

class B extends A{}

public class Test{
public static void main(String[] args){
B.print();//这里B的print()就是A里面的
System.out.println(B.i);//这里B.i就是A.i
}
}

结果:
>java Test
9
9
>Exit code: 0


可以被继承的,但是不可以被重构
一个Java方法不能被子类override,也不支持多态性,并不奇怪。构造方法就是如此。TIJ说构造方法是隐含的静态方法,我同意这个说法。


举一个例子:
class Base
{
   public static void someMethod()
   {
     System.out.println("in static method of Base");
   }

}

class Derived extends Base
{
   public static void someMethod()
   {
     System.out.println("in static method of Derived");
   }

}

class Client
{
     public static void main(String[] args)
     {
Derived.someMethod();

Derived d = new Derived();
d.someMethod();

Base o = new Derived();
o.someMethod();

     }

}

执行时会打印出
in static method of Derived

in static method of Derived

in static method of Base

显然,到底执行哪一个静态方法,是由变量的明显类型决定的,而不是由对象的真实类型决定。这不是多态性的。
谁调用静态函数,执行的静态函数就属于谁!
分享到:
评论

相关推荐

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

    第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...

    你必须知道的C#的25个基础概念(附源码)

    答:静态变量:静态变量使用 static 修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有实例的同一静态变量都是同一个值非静态变量:不带有 static 修饰符声明的变量称做非静态变量在类被实例化时创建...

    一个后端静态资源模板,快速搭建网页的必备

    例如,可以定义一个基础布局模板,然后在其他页面中继承该模板并重写其中的一些部分,从而实现页面布局的统一和复用。 过滤器:模板引擎可以使用过滤器来对变量进行处理。例如,可以使用 date 过滤器来将日期...

    JAVA面试题最全集

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

    php 类中的常量、静态属性、非静态属性的区别

    类的常量不能使用访问限制修饰符,他是 public 的,可继承,可以被子类重写,访问类的常量必须使用双冒号 :: ,可以使用类名或类的实例来访问,因为是常量,所以名称不能使用表示变量的符号 $. 可以把在类中始终保持...

    JAVA资格认证:SCJP310-055中文

    声明、初始化并使用基本类型、数组、枚举、静态对象、成员变量和局部变量,使用合法的变量标识符。  定义方法和静态方法,使用符合JavaBean命名规范的方法名。  定义并使用可变参数。正确重写和重载方法并识别...

    Qt 多线程访问同一个变量

    1.Qt下,多线程使用互斥锁安全访问同一全局变量;2.源码中定义了ThreadA和ThreadB,定义变量后,依次调用函数start()来启动重写的run()函数

    此项目主要是关于C++学习过程的小demo.rar

    涉及到自定义类的构造函数、重载构造函数、函数默认值、析构函数、复制构造函数、重载运算符(赋值函数、加法函数)、虚函数、常值函数、静态函数、静态变量、常值变量、枚举变量、内部类、访问修饰符、继承、重写虚...

    java 面试题 总结

    派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即...

    C#基础概念.doc

    1、静态变量和非静态变量的区别? 2、const 和 static readonly 区别? 3、extern 是什么意思? 4、abstract 是什么意思? 5、internal 修饰符起什么作用? 6、sealed 修饰符是干什么的? 7、override 和 overload ...

    常见 ASP.NET 概念(开源,说明)

    1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 overload 的区别?...

    c#基础学习问答c#基础学习问答

    1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 overload 的区别?...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    《Java和Android开发实战详解》第6到10章源代码-by 南邮-陈杨

    8.1.3 重写和隐藏父类的方法 145 8.1.4 隐藏父类的成员变量 147 8.1.5 使用父类的构造函数 149 8.2 接口 151 8.2.1 接口简介 151 8.2.2 创建与使用接口 152 8.2.3 在类实现多个接口 154 8.3 接口的...

    java基础.doc

    包含java安装,下载java编辑器,变量和数据类型,基础语法,数组,类和对象,字符串的操作方法,值传递或引用传递, static静态,封装,方法的重写,继承,抽象类和抽象方法,多态,接口,内部函数,异常机制,IO流...

    超级有影响力霸气的Java面试题大全文档

    派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,...

    AIC的Java课程1-6章

    第3版 机械工业出版社  教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...

    C#基础概念二十五问

    1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和...

    javacore:java核心 运算符,控制语句,函数,异常,集合,线程,数组,IO流,网路编程,设计模式,java8,面试相关

    成员变量和局部变量 匿名对象 面向对象的三大特征 构造函数 代码块 代码块的说明 this关键字 static关键字 使用static关键字统计类的创建次数 面向对象 main函数 设计模式-单例 继承 jvm类加载顺序决定代码执行顺序...

    C++编程思想习题

    9.1.1函数内部的静态变量 9.1.2控制连接 9.1.3其他的存储类型指定符 9.2名字空间 9.2.1产生一个名字空间 9.2.2使用名字空间 9.3C++中的静态成员 9.3.1定义静态数据成员的存储 9.3.2嵌套类和局部类 9.3.3静态成员...

Global site tag (gtag.js) - Google Analytics