【转载】Java基础 继承的成员变量


转载至 okaaQRoJuz

整理一下结论:

  1. 对于继承的实例变量,如果子类没有隐藏父类的变量,则变量在父类与子类之间是共享的,不过每创建一个对象,都会为实例变量分配单独的空间,不同的对象,成员变量是不同的。

  2. 如果子类隐藏了父类中的变量,即在子类中定义和父类一模一样的成员变量,则父类的变量与子类的变量就是两个不同的变量。

  3. 子类继承父类的静态变量,如果在子类中没有隐藏该变量,则父类与子类中的静态变量是同一变量,其中一个的改变就会导致其他变量也随之改变。也就是说,父类与所有子类共享父类中的静态变量。

  4. 相对于实例变量,静态变量的继承更加容易出错。因为实例变量是基于对象的,每个对象都在堆上分配单独的空间来存放实例变量,不同对象之间的实例变量互不干扰。而静态变量是基于类的。由类的所有对象所共享。如果子类继承了父类的静态变量(没有隐藏),则该静态变量还由所有子类(包括子类的对象)所共享。

  5. 如果类的静态变量不是private类型的,通常也应该同时将其声明为final

posted @ 2021-02-04 14:17  海绵698  阅读(158)  评论(0)    收藏  举报