之前给大家稍微的介绍了一下java对象类型转换,向上转型和向下转型方面的知识,那么下面要给大家分享的就是java对象类型转换的实例。
例:
父类Animal和子类Cat当中都定义了实例变量name、静态变量staticName、实例方法eat()和静态方法staticEat()。
除此之外,子类Cat中还定义了实例变量str和实例方法eatMethod()。
父类Animal代码:
public class Animal { public String name = "Animal:动物"; public static String staticName = "Animal:可爱的动物"; public void eat() { System.out.println("Animal:吃饭"); } public static void staticEat() { System.out.println("Animal:动物在吃饭"); } }
子类Cat代码:
public class Cat extends Animal { public String name = "Cat:猫"; public String str = "Cat:可爱的小猫"; public static String staticName = "Dog:我是喵星人"; public void eat() { System.out.println("Cat:吃饭"); } public static void staticEat() { System.out.println("Cat:猫在吃饭"); } public void eatMethod() { System.out.println("Cat:猫喜欢吃鱼"); } public static void main(String[] args) { Animal animal = new Cat(); Cat cat = (Cat) animal; // 向下转型 System.out.println(animal.name); // 输出Animal类的name变量 System.out.println(animal.staticName); // 输出Animal类的staticName变量 animal.eat(); // 输出Cat类的eat()方法 animal.staticEat(); // 输出Animal类的staticEat()方法 System.out.println(cat.str); // 调用Cat类的str变量 cat.eatMethod(); // 调用Cat类的eatMethod()方法 } }
通过引用类型变量来访问所引用对象的属性和方法的时候,Java虚拟机就会使用下面的绑定规则:
1、成员变量(包括静态变量和实例变量)和引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为在编译阶段已经做了绑定。
例:
animal.name、animal.staticName都是和Animal类进行绑定。
2、静态方法和引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为是在编译阶段已经做了绑定。
例:
animal.staticEat()是将staticEat()方法和Animal类进行绑定。
3、实例方法和引用变量实际引用的对象的方法进行绑定,这种绑定属于动态绑定,因为是在运行时由Java虚拟机动态决定的。
例:
animal.eat()是将eat()方法和Cat类绑定。
对于Cat类,运行的时候会出现下面的结果:
Animal:动物 Animal:可爱的动物 Cat:吃饭 Animal:动物在吃饭 Cat:可爱的小猫 Cat:猫喜欢吃鱼
实例就给你分享到这里了,更多java程序代码例子请继续来奇Q工具网了解吧。
推荐阅读: