父类的static步骤和字段可以被子类继承,可以被子类隐藏

父类的static方法和字段可以被子类继承,可以被子类隐藏
本帖最后由 flyertttt 于 2013-04-15 11:31:27 编辑
using System;

public class Test2 {

public static void Main(String[] args) {
    Father fa = new Child();
    fa.add();
    Child.delete();
    fa.update();
            dChild d = new dChild();
            d.update();
}

}
abstract class Father{
public abstract void add();
public void update(){
Console.WriteLine("父亲的update");
}
    public static int[] arr= { 0, 2,3,7 };
public static void delete(){
Console.WriteLine("父亲的delete");
}
}
class Child : Father{
public override void add() {
Console.WriteLine("孩子继承父亲的");

}
public static void update(){
Console.WriteLine("孩子的update");
        Console.WriteLine(arr[0]);
}
public static void delete(){
Console.WriteLine("孩子的delete");
}

}
class dChild : Child
{
    public override void add()
    {
        Console.WriteLine("孩子继承父亲的");

    }
    public  void update()
    {
        Console.WriteLine("孩子的update");
        Console.WriteLine(arr[0]);
    }
    public static void delete()
    {
        Console.WriteLine("孩子的delete");
    }
}
运行结果:

孩子继承父亲的
孩子的delete
父亲的update
孩子的update
0

总结:
一.静态方法和字段可以被继承
二.如果子类中出现同名的静态方法和字段,将重新创建新的同名的静态字段和方法,隐藏原来的静态方法和字段,而不是重写和覆盖
三.如果是子类中有同名的非静态方法和字段,也将隐藏原来的非静态方法和字段,此时不能用类访问该静态方法和字段,只能创建对象后访问
四.私有静态方法不能被访问,同名也没有关系
------解决方案--------------------
引用:
我说的不是静态类,而是非静态类中的静态成员可以被子类继承,如果是静态类那是密封的,就肯定不能继承啊

任何非私有的成员都是可以被继承的,这里不区分静态还是非静态成员,不知道你纠结些什么?