Java静态方法Static继承问题

简介: Java静态方法Static继承问题

使用Child类继承Parent

class Parent{
    public static String name = "parent";
    public static String getName(){
        return name;
    }
    public static void sayHello(){
        System.out.println(name);
    }
}
class Child extends Parent{
    public static String name = "child";
    public static String getName(){
        return name;
    }
}
public class Demo1 {
    public static void main(String[] args) {
        System.out.println(Parent.name);
        System.out.println(Parent.getName());
        Parent.sayHello();
        System.out.println(Child.name);
        System.out.println(Child.getName());
        Child.sayHello();
    }
}

输出结果


parent

parent

parent

child

child

parent   # 注意子类调用父类的静态方法,并没有输出子类的静态属性



在子类中构建与父类相同的方法名、输入参数、输出参数、访问权限(权限可以扩大),并且父类、子类都是【静态方法】,此种行为叫隐藏(Hide),它与覆写(Override)有两点不同:


表现形式不同


隐藏用于静态方法,

覆写用于非静态方法(实例方法)。

职责不同


隐藏的目的是为了抛弃父类静态方法,重现子类方法,就是期望子类的静态方法不要破坏子类的业务行为,

覆写则是将父类的行为增强或减弱。

参考

Java不要覆写静态方法


相关文章
|
13天前
|
Java
Java中的继承和多态是什么?请举例说明。
Java中,继承让子类继承父类属性和方法,如`class Child extends Parent`,子类可重写父类方法。多态允许父类引用指向子类对象,如`Animal a = new Dog()`,调用`a.makeSound()`会根据实际对象类型动态绑定相应实现,增强了代码灵活性和可扩展性。
10 0
|
15天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
20天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1月前
|
Java 程序员 编译器
Java继承与多态知识点详解
本文主要讲解的是Java中继承与多态的知识点
|
1月前
|
Java C++ iOS开发
java为何不支持多继承
java为何不支持多继承
25 0
|
1月前
|
Java 程序员 编译器
Java继承详解
Java继承详解
|
1月前
|
Java 程序员 编译器
【详识JAVA语言】面向对象程序三大特性之二:继承
【详识JAVA语言】面向对象程序三大特性之二:继承
47 2
|
1天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
1天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
5 0
|
1月前
|
Java
java中的继承
java中的继承
10 1