您现在的位置是: 堆糖网 > 职场 > 成员变量-实例变量和成员变量

成员变量-实例变量和成员变量

2020-03-19 19:42作者:堆糖网 153人阅读

简介一、成员变量 成员变量和静态变量的区别: 1,成员变量所属于对象。所以也称为实例变量。 静态变量所属于类。所以也称为类变量。 2,成员变量存在于堆内存中。 静态变量存在于方

一、成员变量

成员变量和静态变量的区别:

1,成员变量所属于对象。所以也称为实例变量。

静态变量所属于类。所以也称为类变量。

2,成员变量存在于堆内存中。

静态变量存在于方法区中。

3,成员变量随着对象创建而存在。随着对象被回收而消失。

静态变量随着类的加载而存在。随着类的消失而消失。

4,成员变量只能被对象所调用。

静态变量可以被对象调用,也可以被类名调用。

所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。

一成员变量

以上数据内容来源于:百度成员变量搜狗成员变量360成员变量

二、实例变量和成员变量

作用域一般以块来限定也就是编程中常见的

类变量类中适用

成员变量类中的属性成员

实例变量new初始化内存空间的对象实现引用传递局部变量类中实现值传递的对象并不是类的对象而是由8大数据类型声明只在相应的作用域中作用

        int age成员变量      age 成员函数        age     

上面是一个典型的类,   new 这个才是实例变量。

你认为他们是一个东西么?

实例变量是通过实例化才产生的。实例变量意思就是根据某个类(类是一个蓝图)创造出具体的东西,这个东西就是对象,也就是你口中说的实例变量。

而成员变量只是类的一个基本的性质。在类中用数据所处的状态来展示。上面例子就是age

二实例变量和成员变量

以上数据内容来源于:百度实例变量和成员变量搜狗实例变量和成员变量360实例变量和成员变量

三、成员变量是什么

成员变量的隐藏:

如果在子类中对从父类继承来的成员变量进行重新定义,即出现了子类变量对父类变量的隐藏。所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏”起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。

举例:

……

x0;

……

……

x5;

……

这个例子中,是的一个子类。其中声明了一个和父类同名的变量x,并定义了与之相同的方法,这时在子类中,父类的成员变量x被隐藏,父类的方法被重载。于是子类对象所使用的变量x为子类中定义的x,子类对象调用的方法为子类中所实现的方法。

注意,重载的方法和父类中被重载的方法要具有相同的名字,相同的参数表和相同的返回类型。

子类通过成员变量的隐藏和方法的重载可以把父类的状态和行为改变为自身的状态和行为。

方法的覆盖:

正如子类可以定义与父类同名的成员变量,实现对父类成员变量的隐藏一样,子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖。当在子类中调用同名的方法时,一般情况下是调用它自己定义的方法,因而实现了对父类方法的覆盖,如果要调用父类的方法,只需在方法名前使用不同的类名或对象名即可。

举例:

"red"

遮蔽了超类中的2个变量

去掉前面的注释符号那么就改写了父类的方法返回的是自己的颜色即

这里调用的依然是父类的方法,返回为red,因为子类中并未改写该方法,虽然它遮蔽了变量

如果把中的注释去掉就会显示的是

中实现和c语言类似的输出语句。

和方法不同的是:强制转换可访问父类的变量

这里虽然强制转换为父类但是还是调用的子类的。强制转换也不能访问

自动转型子类转换为超类

子类中虽然有这个方法但是转型为超类后超类中并没这个方法

这样就对了,强制转换为子类,这种转换通常成为窄转换,即父类向子类的转换。

因为超类中的方法被改写所以调用的也是子类的方法

超类中的方法未被改写所以还是调用超类中的方法

总结:

覆盖:分为变量覆盖和方法覆盖,如果父类变量被覆盖后,可通过强制转换成父类来访问父类的变量,还可通过变量名来访问。而父类的方法被覆盖后,只能通过方法名来访问,不能像变量那样通过强制转换来访问父类的方法。

三成员变量是什么

以上数据内容来源于:百度成员变量是什么搜狗成员变量是什么360成员变量是什么
更多关于成员变量
更多相关:百度成员变量搜狗成员变量360成员变量

Tags:深圳中国移动营业厅

堆糖随机推荐

堆糖探索

网名:堆糖

职业:部落开发工程师

现居:互联网堆糖部落

站点探索