菜鸟学Java第五天 关于super和static
在Java中super(),是特指父类的构造函数的,而如果想调用父类成员用super.成员名,来操作。Java语言提供类的“反继承”与类成员的“反改造”功能。当一个类用Java的关键字“final”修饰时,这个类就不能被再次基础,不能在“繁衍”后代了,其被继承的权利就别剥夺了。
类的成员可以用Java的关键字“static”修饰,有static修饰的成员称为类的静态成员。static,静止的,静态的。类的一般成员(没有被static修饰的成员)只有在定义类变量并且调用构造函数给类变量赋值以后才存在,才在内存中被分配空间。而类的静态成员则不同,他们在类的定义之前就已经在内存中被单独分配了独立的存储空间,因而类变量的定义之前,类的静态成员就已经存在于内存中了,因此静态成员也可以通过类名(而不是定义变量名)来直接访问它们。对于Java语言中的类,定义了类的多少个变量,系统在内存中就开辟多少个相应的存储空间,以此存放每个类变量各自的成员。类的各个变量之间是相互独立的,都是类的“复制品”,而各个变量分别占据这不同的内存空间,任何一个类变量成员的改变,都不会影响到其他类变量相应的成员;然而对于类的静态成员则不同,定义类的变量并通过构造函数赋值时,系统只为类变量中的一般成员开辟了存储空间,而静态成员因为“早早地”就开辟了空间,所以就不再在类变量中为其分配存储空间了,因此不论定义了多少变量,各个变量的静态成员是共用的、唯一的在内存中占据单独的存储空间。
类的静态成员有以下两个特点:
1、静态成员可以直接通过类名调用,而普通成员只能通过类的变量来调用。
2、静态成员也可以通过类的变量来调用(不提倡这样做,Eclipse编程器会在行首给出黄色警告标记“The static field shoule be accessed in a static way”),但静态成员是类的所有变量的公用成员。
在一个类的内部,静态成员之间可以相互直接调用,但静态成员函数是不能直接调用类中的普通成员(普通成员在类的定义之前是不存在的,而这时候静态成员就已经存在了),类的静态成员只能通过类变量调用普通成员(而不是直接调用类的普通成员)。