日期:2014-05-20  浏览次数:20690 次

静态继承的问题
静态方法和变量也称为类变量和类方法,他们应该是跟这个类相关联的。为什么他们可以被继承?

------解决方案--------------------
实力化的问题
静态的是大家都共享的
------解决方案--------------------
我是初学者.继承只跟public private protected 有关吧.static 另外分配内存空间跟继承无关吧.如有错,望指点

------解决方案--------------------
在java中,类中的静态成员变量和静态方法相当于C,C++中的全局变量/函数。在java中,这些数据没有与具体某个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。
------解决方案--------------------
静态变量和类方法也是类属性的一部分
继承类当然需要把这些属性都继承过来

望指点,谢谢
------解决方案--------------------
不能算是继承
只是可以不用类名.变量or方法来访问
直接用变量or方法
------解决方案--------------------
class AA {
static int i = 0;

AA() {
i++;
}

public static void show() {
System.out.println( "AA.show()= " + i);
}
}

class SubAA extends AA {
public static void show() {
System.out.println( "SubAA.show()= " + i);
}
}

public class Test7 {

/**
* @param args
*/
public static void main(String[] args) {
AA a1 = new AA();
AA.show();
SubAA sa1 = new SubAA();
SubAA.show();
SubAA sa2 = new SubAA();
SubAA.show();

}

}

结果是:
AA.show()= 1
SubAA.show()= 2
SubAA.show()= 3

这就充分说明了static变量,只存在一个,继承了类,也只是用另一个引用来指向同一个地址内的东西。
它是在类加载时分配了空间,而不是在对象创建时分配空间的。所是只有一个地方存放它。
但可以用多个引用指向它。
------解决方案--------------------
呵呵,只是访问,不会是新变量的
------解决方案--------------------
事实上你继承后使用的静态变量还是父类中的那个静态变量,它们的值是一样的,因为它们在内存中使用的空间是相同的。
------解决方案--------------------
$ zz╭ ╮╭ ﹌╮. $
$ z(o-.-o)(o-.-o) . $
$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $
------解决方案--------------------
静态和继承是两个概念!
静态是说所有的实例对象共享同一个实例,即不管你申明了多少个实例对象,其实在内存中都用了同一个实体。
而继承则对基类的修改和发展。如果和基类的某些申明相同的话,则覆盖基类的东西。
所以,静态和继承是从不同的角度在谈问题,是没有什么冲突的。如下例:
public class test {
public static void main(String[] arg) {
base.stMethod();
extend.stMethod();
}
static class base {
protected static int st1=11,st2=12;
static void stMethod() {
System.out.println( "In Base. st1= "+st1+ " st2= "+st2);}
}
static class extend extends base {
protected static int st1=21;
static void stMethod() {
System.out.println( "In Extend. st1= "+st1+ " st2= "+st2); }
}
}
base类和extend类都是静态类,extend类是base的派生类。它覆盖了base的静态方法stMethod和静态变量st1。在main中我们可以看到,通过base引用的stMethod方法由于使用的是base的东西,所以结果和变量值都是base的,而通过extend则使用派生的。运行结果如下:
In Base. st1=11 st2=12
In Extend. st1=21 st2=12
------解决方案--------------------
简单问题复杂化了
------解决方案--------------------
比如说,狗有四条腿
不管是黑狗,白狗,大狗,小狗,就连死狗都有四条腿,这就是他们共有的特性


------解决方案--------------------
比如说,狗有四条腿
不管是黑狗,白狗,大狗,小狗,就连死狗都有四条腿,这就是他们共有的特性


很形象哈。。