`
bluenemo
  • 浏览: 178463 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java静态方法笔记

阅读更多
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笔记静态成员" java语言中静态成员是指属于类的成员,而不是属于实例的成员。静态成员可以被所有实例共享,在程序中只有一份拷贝。静态成员包括静态变量、静态方法和静态初始化块。 1、静态变量 静态变量是...

    java笔记java笔记java笔记

    - **基本类型包装类**:如`Integer`、`Double`等,它们提供了将基本类型转换为对象的能力,并且提供了丰富的静态方法来处理数值。 - **`String`类**:关于字符串的操作,包括字符串的创建、拼接、查找、替换等操作。...

    java笔记 java笔记

    - **静态方法**:不依赖于对象实例的方法。 - **静态类**:不允许实例化,所有成员必须为静态。 ##### 7.5 Singleton模式 Singleton模式确保一个类只有一个实例,并提供一个全局访问点。 ##### 7.6 final关键字 ...

    尚硅谷JAVA基础笔记吐血整理

    “尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...

    Java笔记Java笔记Java笔记

    Java 笔记 Java 语言是强类型(Strongly Typed)语言,它定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。这些关键字可以分类为数据类型、流程控制、修饰符、动作和保留字五类。 数据类型:...

    Java核心技术笔记

    Java 8引入了默认方法和静态方法,增强了接口的使用。 4. **异常和内部类**:异常处理是Java程序健壮性的重要部分,通过try-catch-finally语句块捕获和处理运行时错误。异常分为检查异常(需要显式处理)和运行时...

    java 程序设计笔记

    Java 程序设计笔记 本笔记涵盖了 Java 编程语言的基础知识,包括数据运算、流控制、数组、类、包和接口等概念。下面是从笔记中提取的相关知识点: 1. continue 和 break 语句: - continue 语句用于循环结构中,...

    Effective Java读书笔记.pdf

    Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展可追溯到1991年,当时由...

    java实训笔记

    Java 实训笔记主要涵盖Java语言的基础知识,包括JDK的安装、环境变量配置以及核心编程概念。以下是对这些知识点的详细说明: 1. **JDK安装与环境变量配置**: - JDK(Java Development Kit)是Java开发所需的核心...

    Java学习笔记(必看经典).pdf

    Java是一种广泛使用的面向对象编程语言,其核心设计原则之一就是"万物皆对象"。面向对象编程(Object-Oriented ...`changeName`静态方法接收`Person`对象的引用,改变了对象的`name`属性,展示了对象引用传递的特性。

    毕向东Java笔记

    ### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...

    java基础学习笔记

    ### Java基础学习笔记知识点 #### 一、Java学习路线概览 Java学习通常分为几个阶段,从基础到高级,逐步深化。以下是对给定文件中提到的学习路线的详细解析: ##### 第一阶段:Java基础 - **JAVASE**:Java标准版...

    java基础总结大全(笔记).pdf

    - 方法区存储静态成员、构造函数等。 - 本地方法区是操作系统级别的,如Windows的寄存器。 15. 面向对象: - 面向对象编程强调将功能封装到对象中,简化复杂性。 - 封装隐藏了对象的实现细节,仅提供公共接口...

    Java语言基础笔记

    本笔记将深入探讨Java的核心概念,帮助你巩固和理解这门广泛使用的编程语言的关键要素。 首先,我们要了解Java的基本语法。Java是一种静态类型的面向对象编程语言,这意味着在编写代码时必须声明变量的类型。它的...

    达内 java云笔记 初始化 静态页面

    【Java云笔记初始化静态页面详解】 Java云笔记的初始化阶段是构建一个可运行的Web应用程序的关键步骤,这里的“初始化”通常指的是创建一个基础框架,包括前端界面和后端逻辑的初步设定。在这个场景中,我们关注的...

    java学习心得一些笔记

    Java学习心得笔记主要涵盖了几大知识点,包括运算符、Integer类、引用类型、数组、多维数组、字符串类。下面将详细阐述这些内容。 1. **运算符**: 在Java中,运算符包括移位运算符。`是左移运算符,将二进制数向...

Global site tag (gtag.js) - Google Analytics