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

简介: <p>介绍</p> <p>    JAVA 【引用类型】和【对象类型】在【继承】中的异同,这个问题自己整理过N次,也被人当菜鸟问过N次。所以,在此简单整理一下,以供大家分享。</p> <p></p> <ul><li>在继承关系中,一般成员变量是根据引用类型</li><li>在继承关系中,静态成员变量是根据引用类型</li><li>在继承关系中,一般方法是根据对象类型<br><

介绍

    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


相关文章
|
23天前
|
Java
Java中的继承和多态是什么?请举例说明。
Java中,继承让子类继承父类属性和方法,如`class Child extends Parent`,子类可重写父类方法。多态允许父类引用指向子类对象,如`Animal a = new Dog()`,调用`a.makeSound()`会根据实际对象类型动态绑定相应实现,增强了代码灵活性和可扩展性。
13 0
|
1月前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
16 3
|
2月前
|
Java 程序员 编译器
Java继承与多态知识点详解
本文主要讲解的是Java中继承与多态的知识点
|
2月前
|
Java C++ iOS开发
java为何不支持多继承
java为何不支持多继承
27 0
|
2月前
|
Java 程序员 编译器
Java继承详解
Java继承详解
|
2月前
|
Java 程序员 编译器
【详识JAVA语言】面向对象程序三大特性之二:继承
【详识JAVA语言】面向对象程序三大特性之二:继承
47 2
|
6天前
|
Java
Java语言---面向对象的三大特征之继承
Java语言---面向对象的三大特征之继承
|
7天前
|
Java
java类、封装、继承
java类、封装、继承
|
10天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
10天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
12 0