1.什么是成员变量的隐藏?
成员变量--定义在类中方法之外的变量
成员变量的特征:
1.定义在类中方法之外
2.必须有访问限制修饰
3.可以有初始值也可以没有,如果没有系统会自定赋予默认的初始值
4.可以在当前类中的任意一个方法中使用。
局部变量--定义在类中的方法里面/方法的参数
局部变量的特征:
1.方法里面/方法的参数
2.一定没有访问限制修饰
3.必须有初始值
4.只能在当前方法中使用。
成员变量的隐藏:在同一个类中某一个局部变量的名称与当前类中的某一个成员变量的名称相同,此时这个局部变量就将成员变量的数据值隐藏。
注意:1.同一个类中
2.变量的名称相同,与变量的数据类型没有关系。
package com.wangxing.test1;
public class MyClass {
//定义一个成员变量
public String testname="zhangsan";
//测试方法
public void testMethod(){
//定义一个局部变量
char testname='Z';
/*
* 在同一个类中某一个局部变量的名称与当前类中的某一个成员变量的名称相同
,此时这个局部变量就将成员变量的数据值隐藏。
*/
System.out.println("testname--"+testname); //Z
//如果需要强制得到被隐藏的成员变量值?
//this.成员变量名称
System.out.println("this.testname--"+this.testname); //zhangsan
}
}
测试类
public static void main(String[] args) {
//创建MyClass类的对象
MyClass mc=new MyClass();
//调用测试方法
mc.testMethod();
}
2.静态成员变量与实例变量的区别?
类中的成员变量可以根据是否使用static关键字,划分成2种:
1.静态成员变量【类变量】--- 使用static关键字修饰的成员变量
2.实例变量--普通的成员变量--没有使用static关键字修饰的成员变量
区别:
1.静态成员变量和实例变量都是成员变量,都符合成员变量的基本特征。
2.静态成员变量使用了static关键字修饰,实例变量没有使用static关键字修饰。
3.静态成员变量可以在同一个类的多个对象之间共享数据,实例变量则不能共享数据。
4.静态成员变量可以在静态方法中使用,实例变量则不能在静态方法