介绍
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
分享到:
相关推荐
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class ...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 booleanBoolean charCharacter byteByte shortShort ...
简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter ...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character ...
理解运行时判定引用对象的类型(instanceof),进行强制转型(即引用的显示转型)。 第7章 内部类 2课时 学会定义内部类,能够在外部类中或外部类外实例化内部类;定义静态内部类和实例化。...
企业java工程师测试题 1. 面向对象的特征有哪些方面? 答案:最基本特征:封装,继承,多态。...Integer是引用类型。Integer可以把String转换成int。 5. 运行时异常与一般异常有何异同? 。。。。。
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
14、在Java中,如何跳出当前的多重嵌套循环? 15、构造器(constructor)是否可被重写(override)? 16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
外键是从某个表的一个字段指向另外一个表的主健字段,两个字段的类型和精度应该一致,外键的值必须在主键中存在 Q0030 在数据库中什么代表一条记录? 主健 Q0031 如何编写效率高的SQL语句? "1.根据查询条件建立...