问题描述
static方法能够继承吗,求解答,谢谢
解决方案
可以继承 但是假如本类是final类,则不能被继承
解决方案二:
class Parent {public static void say() {System.out.println("hello");}}class Son extends Parent {}public class Test { public static void main(String[] args) { Son.say();} }如上代码,表名子类继承了父类-------------------------class Parent {public static void say() {System.out.println("parent");}}class Son extends Parent {public static void say() {System.out.println("son");}}public class Test { public static void main(String[] args) { Parent p = new Son();p.say();} }如上代码,表明static方法不能被重写
解决方案三:
static方法可以被继承,如父类定义一个方法,子类的实例也可以调用该方法但是,需要注意的是,静态方法不能被重写,静态方法没有多态的概念,如果子类定义了跟父类一样签名的静态方法,那么只是对父类方法的隐藏
解决方案四:
引用You can write a new instance method in the subclass that has the same signature as the one in the superclass, thus overriding it.You can write a new static method in the subclass that has the same signature as the one in the superclass, thus hiding it. 静态方法是不会继承的,静态方法属于类方法,和类紧密关联的,如果子类定义了同名的静态方法,将会隐藏。但还是可以通过类名来访问的。
解决方案五:
static方法和实例无关,只和对象相关,不能被继承。static方法的调用只需要使用类限定名即可,如Integer.parseInt()。非static方法,如果调用需要先new 对象,然后通过对象调用。class A{ public static void f() { System.out.println("A.f()"); }}class B extends A{ public static void f() { System.out.println("B.f()"); } public static void main(String[] args) { A a = new B(); B b = new B(); B c = (B)a; A.f(); B.f(); a.f(); b.f(); c.f(); }}结果:A.f()B.f()A.f()B.f()B.f()
解决方案六:
不可以继承。
解决方案七:
可以啊。在一般的类里面可以,在static类中不行