Java中的静态方法只能继承,不能重写!!
官方文档是这样写的:
Class methods
If a subclass defines a class method with the same signature as a class method in the superclass, the method in the subclass hides the one in the superclass.
如果一个子类定义了一个和父类静态方法中相同的方法(即方法名,参数和返回类型相同),则该类隐藏了父类中的这个方法。
The distinction between hiding and overriding has important implications. The version of the overridden method that gets invoked is the one in the subclass. The version of the hidden method that gets invoked depends on whether it is invoked from the superclass or the subclass
而该隐藏的静态方法是否被调用,取决于是父类(引用)还是子类(引用)调用了该静态方法
以下是一个例子:
public class Test2
{
public static void main(String[] args)
{
//需要注意的是,这里跟以往的父类引用指向子类对象有点不用
//这个子类创建的对象是由子类类型“N”引用的,所以调用output方法将输出“N”
N n = new N();
n.output();
//这个子类创建的对象是由父类类型“M”引用的,所以调用output方法将输出“M”
M m = new N();
m.output();
}
}
class M
{
public static void output()
{
System.out.println("M");
}
}
class N extends M
{
public static void output()
{
System.out.println("N");
}
}
上述例子中如果N类中的output方法没有static修饰,则会报不能重写的编译错,所以static可以这样来解释:加上static是隐藏了父类中的方法,而不是重写。
同样的,如果父类中的方法不是静态的,那么子类中的同名方法也不可以是静态的,也就是说静态的方法不能被覆盖,静态的方法也不能覆盖非静态的,总之一句话:静态的都不能覆盖,要么全静态,要么全非静态。
分享到:
相关推荐
"java笔记静态成员" java语言中静态成员是指属于类的成员,而不是属于实例的成员。静态成员可以被所有实例共享,在程序中只有一份拷贝。静态成员包括静态变量、静态方法和静态初始化块。 1、静态变量 静态变量是...
- **System类**:提供了一些与系统相关的静态方法和字段,如获取当前时间戳、退出程序等。 - **Runtime类**:允许执行与运行时环境相关的操作,如启动进程、获取内存使用情况等。 - **Process类**:代表一个正在运行...
- **静态方法**:不依赖于对象实例的方法。 - **静态类**:不允许实例化,所有成员必须为静态。 ##### 7.5 Singleton模式 Singleton模式确保一个类只有一个实例,并提供一个全局访问点。 ##### 7.6 final关键字 ...
“尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...
### JAVA经典教材笔记知识点梳理 #### 第一章:JAVA概述及开发环境搭建 - **Java学习概述** - Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA...
Java 8引入了默认方法和静态方法,增强了接口的使用。 4. **异常和内部类**:异常处理是Java程序健壮性的重要部分,通过try-catch-finally语句块捕获和处理运行时错误。异常分为检查异常(需要显式处理)和运行时...
Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展可追溯到1991年,当时由...
Java 实训笔记主要涵盖Java语言的基础知识,包括JDK的安装、环境变量配置以及核心编程概念。以下是对这些知识点的详细说明: 1. **JDK安装与环境变量配置**: - JDK(Java Development Kit)是Java开发所需的核心...
Java是一种广泛使用的面向对象编程语言,其核心设计原则之一就是"万物皆对象"。面向对象编程(Object-Oriented ...`changeName`静态方法接收`Person`对象的引用,改变了对象的`name`属性,展示了对象引用传递的特性。
### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...
- 方法区存储静态成员、构造函数等。 - 本地方法区是操作系统级别的,如Windows的寄存器。 15. 面向对象: - 面向对象编程强调将功能封装到对象中,简化复杂性。 - 封装隐藏了对象的实现细节,仅提供公共接口...
这个章节可能涵盖了Java中一些容易混淆的概念,比如值传递与引用传递、静态与非静态、接口与抽象类的区别等,有助于深化对Java语言的理解。 通过这份笔记的学习,读者将能系统地掌握Java的核心知识,并具备解决...
### Java基础学习笔记知识点 #### 一、Java学习路线概览 Java学习通常分为几个阶段,从基础到高级,逐步深化。以下是对给定文件中提到的学习路线的详细解析: ##### 第一阶段:Java基础 - **JAVASE**:Java标准版...
本笔记将深入探讨Java的核心概念,帮助你巩固和理解这门广泛使用的编程语言的关键要素。 首先,我们要了解Java的基本语法。Java是一种静态类型的面向对象编程语言,这意味着在编写代码时必须声明变量的类型。它的...
【Java云笔记初始化静态页面详解】 Java云笔记的初始化阶段是构建一个可运行的Web应用程序的关键步骤,这里的“初始化”通常指的是创建一个基础框架,包括前端界面和后端逻辑的初步设定。在这个场景中,我们关注的...
Java学习心得笔记主要涵盖了几大知识点,包括运算符、Integer类、引用类型、数组、多维数组、字符串类。下面将详细阐述这些内容。 1. **运算符**: 在Java中,运算符包括移位运算符。`是左移运算符,将二进制数向...
### Java私塾学习笔记整理 #### 第一章:Java入门 **一、Java是什么?** Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年推出。它旨在为跨平台开发提供一种通用的语言环境,使开发者能够在任何...