Java中类变量可以被继承吗

来源:百度知道 编辑:UC知道 时间:2024/06/25 15:59:34
我对Java中static这个关键字的概念很模糊,有以下问题想不通,希望知道的告诉我,谢谢了。:
1、父类中创建了类变量,它的子类可以继承吗?
2、如果在父类中有成员变量public int a,那么在子类里定义类变量public static int a,那么在子类里访问a的话,访问到的是哪一个呢?子类的类变量会覆盖继承而来的成员变量a吗?
谢谢,我实在很迷茫!

1.当然能了
请看一下程序:

public class A {

int i= 10;

}

class B extends A{

public static void main(String[] args) {

B b = new B();

System.out.println(b.i);
}
}
运行结果:10

2.不会
请看一下程序:

public class A {

public int i= 10;

}

class B extends A{

public static int i = 5;

public static void main(String[] args) {

B b = new B();

System.out.println(b.i);
}
}
运行结果:5
所以说不会覆盖,但是当类B中没有定义i时,
输出就会是A类中i的值。
还有静态方法不能重写。
比如以上程序中A类中有函数public int f()
而B类中出现函数public static int f()时,
就会出现编译错误。

我觉得这类问题你最好装一个java编译器Jcreator
自己运行一下印象会比较深刻。

只要是非私有的子类都能继承。
覆盖有个原则就是“非静态的被覆盖,静态的被隐藏”。
仔细体会一下。
只要有与父类相同的变量,且变量不是静态的,就会被覆盖。
方法是包括方法名和权限等限制条件完全相同才会被覆盖。

1.子类能继承父类所有变量和方法(private属性和方法除外)
2.如果在子类定义相同的,肯定是使用子类自身的。