java引用类型和对象类型_JAVA 【引用类型】和【对象类型】在【继承】中的异同...

介绍

JAVA 【引用类型】和【对象类型】在【继承】中的异同,这个问题自己整理过N次,也被人当菜鸟问过N次。所以,在此简单整理一下,以供大家分享。

在继承关系中,一般成员变量是根据引用类型

在继承关系中,静态成员变量是根据引用类型

在继承关系中,一般方法是根据对象类型

在继承关系中,静态方法是根据引用类型

注意

静态成员变量,静态方法是基于类的,本文为了测试观察,所以,会用对象去引用静态成员变量和静态方法。

Super Class:

package shuai.study.inherit;

public class SuperClass {

public String commonString = "SuperClass Common String";

public static String staticString = "SuperClass Static String";

public int otherCommonInt = 0;

public static int otherStaticInt = 10;

public void commonMethod() {

System.out.println("SuperClass Common Method: " + commonString);

}

public static void staticMethod() {

System.out.println("SuperClass Static Method: " + staticString);

}

public void otherCommonMethod() {

System.out.println("SuperClass Other Common Method: " + otherCommonInt);

}

public static void otherStaticMethod() {

System.out.println("SuperClass Other Static Method: " + otherStaticInt);

}

}

Suber Class:

package shuai.study.inherit;

public class SuberClass extends SuperClass {

public String commonString = "SuberClass Common String";

public static String staticString = "SuberClass Static String";

@Override

public void commonMethod() {

System.out.println("SuberClass Common Method: " + commonString);

}

public static void staticMethod() {

System.out.println("SuberClass Static Method: " + staticString);

}

}

Test Class:

package shuai.study.inherit;

public class Test {

public static void main(String[] args) {

SuperClass superClass = new SuberClass();

// Common member variable is according to quote type

System.out.println(superClass.commonString);

// Static member variable is according to quote type

// Generally we invoke static member as SuperClass.staticString, because static method & variable is based on class

System.out.println(superClass.staticString);

// Common method is according to object type

superClass.commonMethod();

// Static method is according to quote type

// Generally we invoke static method as SuperClass.staticMethod(), because static method & variable is based on class

superClass.staticMethod();

System.out.println("==================================================");

SuberClass suberClass = new SuberClass();

// Inherit member variable from super class

System.out.println(suberClass.otherCommonInt);

System.out.println(SuberClass.otherStaticInt);

// Inherit method from super class

suberClass.otherCommonMethod();

SuberClass.otherStaticMethod();

// Self method

suberClass.commonMethod();

SuberClass.staticMethod();

}

}

Output:

SuperClass Common String

SuperClass Static String

SuberClass Common Method: SuberClass Common String

SuperClass Static Method: SuperClass Static String

==================================================

0

10

SuperClass Other Common Method: 0

SuperClass Other Static Method: 10

SuberClass Common Method: SuberClass Common String

SuberClass Static Method: SuberClass Static String

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值