1、Java中共有6种变量类型:
???? 1)类变量:包括在类中定义的静态数据成员以及在接口中声明的静态或非静态的数据成员。
???? 2)实例变量:在类体中声明的非静态变量(注:“变量成员”指的是类变量和实例变量)。
???? 3)方法参数:传入方法体的参数。
???? 4)构造函数参数:传入构造函数的参数。
???? 5)异常处理参数:用来传入一个try语句中的catch块的的参数。
???? 6)局部变量:代码块(包括方法中)或一个for语句中声明的变量。
?
2、实例
class="java" name="code">class Base { int x = 1; static int y = 2; int z = 3; int method() { return x; } } class Subclass extends Base { int x = 4; int y = 5; static int z = 6; int method() { return x; } } public class Test { public static void main(String[] args) { Subclass s = new Subclass(); System.out.println(s.x + " " + s.y + " " + s.z); System.out.println(s.method()); Base b = (Subclass) s; System.out.println(b.x + " " + b.y + " " + b.z); System.out.println(b.method()); } }
??? 执行输出:
??? 4? 5? 6
??? 4
??? 1 2 3
??? 4
?
3、结论
??? 1)实例变量和类变量能被隐藏,被子类的同名变量成员隐藏。
??? 2)局部变量和各种参数永远不会被隐藏。
??? 3)强制转换子类为父类型之后,可以访问父类中被隐藏的变量,即多态的应用。?